一种加载图片的方法及装置与流程

文档序号:12122725阅读:225来源:国知局
一种加载图片的方法及装置与流程

本发明涉及图片显示技术领域,尤其涉及一种加载图片的方法及装置。



背景技术:

随着显示技术的不断发展,各类显示设备的屏幕分辨率越来越高,相应的对图片的清晰度的要求也越来越高,高清图片已经成为图片显示的基本要求。然而,由于图片的清晰度越高则其存储容量越大,通常高清图片的存储容量在1MB以上,有些高清图片的存储容量甚至达到10MB以上。

为了满足系统分配的最大内存,在现有技术中,对于高清图片的显示,通常选择牺牲图片的清晰度,先对图片进行压缩,再将压缩后的图片进行加载显示,从而将导致显示给用户的图片画质差,影响用户的体验,无法满足用户的需求。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的加载图片的方法及装置。

本发明实施例提供一种加载图片的方法,包括:

获取目标图片的图像分辨率以及用于显示所述目标图片的显示区域的显示分辨率;

判断所述图像分辨率是否大于所述显示分辨率;

当所述图像分辨率大于所述显示分辨率时,将所述目标图片分割成若干图片片段;

按照预设显示规则,将与所述显示区域的显示范围对应的图片片段加载到所述显示区域内。

优选的,所述将所述目标图片分割成若干图片片段,包括:

基于所述目标图片的存储容量,确定所述目标图片的总分割数量;

基于所述总分割数量和所述目标图片的长宽比,确定所述目标图片在长度方向上的第一分割数量以及所述目标图片在宽度方向上的第二分割数量;

根据所述第一分割数量和所述第二分割数量对所述目标图片进行分割。

优选的,所述按照预设显示规则,将与所述显示区域的显示范围对应的图片片段加载到所述显示区域内,包括:

将所述显示区域的中心与所述目标图片的中心相对应,依次将与所述显示区域的显示范围对应的图片片段加载到所述显示区域内;或

将所述显示区域的任一顶点与所述目标图片的对应顶点相对应,依次将与所述显示区域的显示范围对应的图片片段加载到所述显示区域内。

优选的,在所述按照预设显示规则,将与所述显示区域的显示范围对应的图片片段加载到所述显示区域内之后,所述方法还包括:

接收用户在所述显示区域内的滑动操作指令;

根据所述滑动操作指令,确定待加载在所述显示区域内的新增图片片段;

将所述新增图片片段加载到所述显示区域内的对应位置处。

优选的,在所述将所述新增图片片段加载到所述显示区域内的对应位置处之后,所述方法还包括:

将所述显示区域内由所述新增图片片段替换掉的图片片段的缓存数据进行删除。

基于同一发明构思,本发明实施例还提供一种加载图片的装置,包括:

获取模块,用于获取目标图片的图像分辨率以及用于显示所述目标图片的显示区域的显示分辨率;

判断模块,用于判断所述图像分辨率是否大于所述显示分辨率;

分割模块,用于当所述图像分辨率大于所述显示分辨率时,将所述目标图片分割成若干图片片段;

第一加载模块,用于按照预设显示规则,将与所述显示区域的显示范围对应的图片片段加载到所述显示区域内。

优选的,所述分割模块,包括:

第一确定单元,用于基于所述目标图片的存储容量,确定所述目标图片的总分割数量;

第二确定单元,用于基于所述总分割数量和所述目标图片的长宽比,确定所述目标图片在长度方向上的第一分割数量以及所述目标图片在宽度方向上的第二分割数量;

分割单元,用于根据所述第一分割数量和所述第二分割数量对所述目标图片进行分割。

优选的,所述第一加载模块,包括:

第一加载单元,用于将所述显示区域的中心与所述目标图片的中心相对应,依次将与所述显示区域的显示范围对应的图片片段加载到所述显示区域内;或

第二加载单元,用于将所述显示区域的任一顶点与所述目标图片的对应顶点相对应,依次将与所述显示区域的显示范围对应的图片片段加载到所述显示区域内。

优选的,所述装置还包括:

接受模块,用于接收用户在所述显示区域内的滑动操作指令;

确定模块,用于根据所述滑动操作指令,确定待加载在所述显示区域内的新增图片片段;

第二加载模块,用于将所述新增图片片段加载到所述显示区域内的对应位置处。

优选的,所述装置还包括:

删除模块,用于将所述显示区域内由所述新增图片片段替换掉的图片片段的缓存数据进行删除。

本发明实施例中的一个或多个技术方案,至少具有如下技术效果或优点:

本发明对于图像分辨率大于显示区域的显示分辨率的目标图片,通过对目标图片进行分割,得到若干图片片段,并将与显示区域的显示范围对应的图片片段按照预设显示规则加载到显示区域内,其余位于显示区域的显示范围外的图片片段暂不加载,从而节省了系统内存的消耗,还能够保证图片的显示画质,同时也提高了加载图片的速度,用户体验好。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考图形表示相同的部件。在附图中:

图1示出了本发明实施例的一种加载图片的方法的流程图;

图2示出了本发明实施例的目标图片在分割前的示意图;

图3示出了本发明实施例的目标图片在分割后的示意图;

图4示出了本发明实施例的一种加载图片的装置的结构图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

本发明实施例提供一种加载图片的方法,应用于包含显示单元的电子设备中,其中,显示单元对应具有一显示区域,电子设备可以采用安卓(Android)系统。如图1所示,所述方法包括以下步骤:

步骤101:获取目标图片的图像分辨率以及用于显示目标图片的显示区域的显示分辨率。

步骤102:判断图像分辨率是否大于显示分辨率。

步骤103:当图像分辨率大于显示分辨率时,将目标图片分割成若干图片片段。

具体来讲,对于目标图片的分割,在一种具体的实施方式中,首先,基于目标图片的存储容量,确定目标图片的总分割数量。通常,在Android设备的显示单元中进行显示的单个图片的理想存储容量范围为500Kb~1Mb,因此,可以在理想储存范围内确定一预设单个图片片段存储容量,如800Kb。从而,当分割出的每张图片片段的存储容量都控制在预设单个图片片段存储容量时,由若干图片片段组成的图片将会有更好的显示效果。

进一步,根据目标图片的存储容量以及预设单个图片片段的存储容量,确定目标图片的总分割数量。其中,目标图片的存储容量可以通过目标图片属性信息中获得。其中,用于确定目标图片的总分割数量的公式如下:其中,A为目标图片的存储容量,B为预设单个图片片段的存储容量,C为目标图片的总分割数量。

在应用上述公式的过程中,目标图片的存储容量与预设单个图片片段的存储容量的单位需保持一致,若两者单位不一致,需要先进行单位换算,例如,若目标图片的存储容量的单位为Mb,而预设单个图片片段的存储容量的单位为Kb时,可以将目标图片的单位转换为Kb。另外,若目标图片的存储容量与预设单个图片片段的存储容量相除得到的数值包含有余数,则将余数进位,以使目标图片的总分割数量为整数,例如,目标图片的存储容量为23Mb,预设单个图片片段的存储容量为800Kb,则进位后得到的目标图片的总分割数量为30张,最终得到的目标图片的总分割数量为需要将目标图片分割成图片片段的总数量。

需要说明的是,不同的显示单元对应进行显示的单个图片片段的理想存储容量可能不同,本领域技术人员可以根据实际情况确定预设单个图片片段的存储容量,例如,选择1Mb作为预设单个图片片段的存储容量,或者,选择500K作为预设单个图片片段的存储容量,本申请不做限定。

进一步,由于图片通常按照一定长宽比例进行显示,因此,在得到目标图片的总分割数量之后,基于总分割数量和目标图片的长宽比,确定目标图片在长度方向上的第一分割数量以及目标图片在宽度方向上的第二分割数量。例如,目标图片的长宽比为4∶3,计算出的目标图片的总分割数量为30张,则,用于确定第一分割数量和第二分割数量的公式如下:

其中,D为目标图片在长度方向上的第一分割数量,E为目标图片在宽度方向上的第二分割数量,F为目标图片的长宽比。其中,在应用上述公式的过程中,如果第一分割数量和第二分割数量存在余数,同样,将余数进位,以使第一分割数量和第二分割数量均为整数。

进一步,根据第一分割数量和第二分割数量对目标图片进行分割。具体的,每个图片片段的长度和每个图片片段的宽度的计算公式如下:

其中,G为每个图片片段的长度,H为每个图片片段的宽度,Fl为目标图片的长度,F2为目标图片的宽度。从而,根据每张图片片段的长度和宽度就可以将目标图片分割成相应的等份。

在具体实施过程中,可以根据Android中的Math函数来计算目标图片在长度方向和宽度方向上分割的图片片段的数量,进一步,在计算时需要使用Math中的sqrt函数求平方根,具体的,利用sqrt函数求得第一分割数量和第二分割数量,由于求得的第一分割数量和第二分割数量的类型为double,图片片段的类型应为整型,因此,可以利用Math中的ceil函数进位取整。同理,也可以利用Math中的ceil函数对目标图片的总分割数量进位取整。

在本申请中,在确定第一分割数量和第二分割数量的过程中,若第一分割数量和第二分割数量存在余数,则在分割目标图片后,根据取整后的第一分割数量、取整后的第二分割数量和目标图片的尺寸,对分割后的目标图片进行留白。其中,留白位置位于目标图片的四周。具体的,当目标图片在长度方向上的第一分割数量存在余数,则,在将第一分割数量取整后,通过将取整后的第一分割数量乘以每张图片片段的长度后减去目标图片的长度,得到目标图片在长度方向上的留白尺寸。当目标图片在宽度方向上的第二分割数量存在余数,则,在将第二分割数量取整后,通过将取整后的第二分割数量乘以每张图片片段的宽度后减去目标图片的宽度,得到目标图片在宽度方向上的留白尺寸。最后,根据得到的目标图片在长度方向的留白尺寸以及在宽度方向上的留白尺寸对目标图片的四周进行留白,以使得分割后由若干图片片段拼接而成的目标图片的图片比例可以适应原始目标图片的比例。

在进行图片分割时,可以使用Android中的Bitmap.createBitmap来进行,分割后的图片片段保存为bitmap格式,并存储到ImageCache对象中,该对象包含3个参数,3个参数分别为:图片片段在分割后的图片阵列中长边的位置、图片片段在图片阵列中短边的位置,以及图片片段的bitmap对象。在分别得到各个图片片段后,将各个图片片段的长边和短边的位置一并存储到对应的ImageCache对象中,并将对象存储到list中方便后来创建拼接图片。其中,分割前和分割后的目标图片的示意图分别对应图2和图3。

进一步,在步骤102之后,当目标图片的图像分辨率等于或小于显示区域的显示分辨率时,表明电子设备的显示单元能够在系统为其分配的内存的情况下对目标图片进行加载显示,因此无需对目标图片进行分割,可以直接将目标图片加载到显示区域。

步骤104:按照预设显示规则,将与显示区域的显示范围对应的图片片段加载到显示区域内。

其中,在一种具体的实施方式中,可以将显示区域的中心与目标图片的中心相对应,依次将与显示区域的显示范围对应的图片片段加载到显示区域内。即,以目标图片的中心作为显示中心,将与显示区域的显示范围对应的若干图片片段加载到显示区域内,从而,用户在显示区域可以看到目标图片的中心位置处的部分图像。而,在另一种具体的实施方式中,可以将显示区域的任一顶点与目标图片的对应顶点相对应,依次将与显示区域的显示范围对应的图片片段加载到显示区域内,即,以目标图片的边界作为显示边界,将与显示区域的显示范围对应的若干图片片段加载到显示区域内,从而,用户在显示区域可以看到目标图片的边界处的部分图像,例如,将显示区域的左上角与目标图片的左上角相对应进行显示。

在具体实施过程中,可以通过创建GridView来加载图片片段。具体地,使用GridView来创建列表,并将分割后的图片片段的在长度方向和宽度方向上的数量传入作为整体的框架中,通过遍历list将图片片段填入。进一步,首先GridView需要创建一个适配器来适配list中的参数,当遍历list时,将每个图片片段中的长宽位置读取出来,依次将其对象中的图片片段数据放入对应位置,用以显示。在创建GridView的过程中,为了消除控件本身的缝隙对图片的影响,可以将GridView中的配置设置为android:listSelector=″@NULL"。最后,根据Android中GridView的规则,当GridView中的item在显示区域内,对相应的item进行加载,位于显示区域外的item不进行加载。其中,GridView中的各个item对应各个图片片段。

进一步,在步骤104之后,本申请的加载图片的方法还可以包括:

接收用户在显示区域内的滑动操作指令,根据滑动操作指令,确定待加载在显示区域内的新增图片片段,将新增图片片段加载到显示区域内的对应位置处。

具体来讲,当用户通过滑动操作拖拽显示区域内的GridView控件来浏览未加载在显示区域内的其他图片片段时,通过接收用户的滑动操作指令,根据滑动操作指令,确定出待加载在显示区域内的新增图片片段,其中,新增图片片段为归属于目标图片且当前时刻未加载在显示区域内的图片片段。在将新增图片图片片段加载到显示区域内的对应位置后,由新增图片片段替换掉的图片片段缓存在系统中。例如,当用户进行向左的滑动操作,则将位于当前时刻下显示区域最右侧的图片片段的右侧未加载图片片段确定为新增图片片段,并在下一时刻将新增图片片段加载到显示区域内的对应位置,同时,由新增图片片段替换掉位于显示区域最左侧的图片片段。

本申请对于图像分辨率大于显示区域的显示分辨率的目标图片,通过对目标图片进行分割,得到若干图片片段,并将与显示区域的显示范围对应的图片片段按照预设显示规则加载到显示区域内,其余位于显示区域的显示范围外的图片片段暂不加载,当用户进行滑动操作时,再将对应位置处的图片片段进行显示,从而节省了系统内存的消耗,还能够保证图片的显示画质,同时也提高了加载图片的速度,尤其对于10Mb以上的图片,能够有效地提高加载速度,用户体验好,并且,本申请无需为电子设备添加新的控件即可实现对超大图片的加载。

进一步,在将新增图片片段加载到显示区域内的对应位置处之后,所述方法还包括:

将显示区域内由所述新增图片片段替换掉的图片片段的缓存数据进行删除。本申请通过对缓存的数据进行删除,能够进一步节省系统内存,缓解内存加载图片消耗的压力。

基于同一发明构思,本发明实施例还提供一种加载图片的装置,该加载图片的装置与前述实施例中的加载图片的方法相对应,如图4所示,所述装置包括:

获取模块201,用于获取目标图片的图像分辨率以及用于显示所述目标图片的显示区域的显示分辨率;

判断模块202,用于判断所述图像分辨率是否大于所述显示分辨率;

分割模块203,用于当所述图像分辨率大于所述显示分辨率时,将所述目标图片分割成若干图片片段;

第一加载模块204,用于按照预设显示规则,将与所述显示区域的显示范围对应的图片片段加载到所述显示区域内。

其中,分割模块203,包括:

第一确定单元,用于基于所述目标图片的存储容量,确定所述目标图片的总分割数量;

第二确定单元,用于基于所述总分割数量和所述目标图片的长宽比,确定所述目标图片在长度方向上的第一分割数量以及所述目标图片在宽度方向上的第二分割数量;

分割单元,用于根据所述第一分割数量和所述第二分割数量对所述目标图片进行分割。

其中,第一加载模块204,包括:

第一加载单元,用于将所述显示区域的中心与所述目标图片的中心相对应,依次将与所述显示区域的显示范围对应的图片片段加载到所述显示区域内;或

第二加载单元,用于将所述显示区域的任一顶点与所述目标图片的对应顶点相对应,依次将与所述显示区域的显示范围对应的图片片段加载到所述显示区域内。

其中,所述装置还可以包括:

接受模块,用于接收用户在所述显示区域内的滑动操作指令;

确定模块,用于根据所述滑动操作指令,确定待加载在所述显示区域内的新增图片片段;

第二加载模块,用于将所述新增图片片段加载到所述显示区域内的对应位置处。

其中,所述装置还可以包括:

删除模块,用于将所述显示区域内由所述新增图片片段替换掉的图片片段的缓存数据进行删除。

上述本申请实施例中的技术方案,至少具有如下的技术效果或优点:

本发明对于图像分辨率大于显示区域的显示分辨率的目标图片,通过对目标图片进行分割,得到若干图片片段,并将与显示区域的显示范围对应的图片片段按照预设显示规则加载到显示区域内,其余位于显示区域的显示范围外的图片片段暂不加载,从而节省了系统内存的消耗,还能够保证图片的显示画质,同时也提高了加载图片的速度,用户体验好。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1