基于Android的图片加载方法及装置制造方法及图纸

技术编号:14897563 阅读:140 留言:0更新日期:2017-03-29 12:53
本发明专利技术公开一种基于Android的图片加载方法及装置,包括:通过LoadImage函数对图片进行加载;压缩图片,在图片显示前对图片进行采样率设置;图片显示,通过调用系统提供的接口setImage函数将经过采样后的图片显示在屏幕上;图片缓存,对于已经显示的图片,缓存预设时间段t内的N张图片,1m≤t≤24h,2≤N≤20;图片清理,通过调用recycle函数回收图片资源释放内存空间。本发明专利技术的有益效果是通过统一的方式来加载多种图片资源,提高了图片处理效率和降低内存占用和能够在保证图片不失真显示的情况下,将内存占用降到较小的范围。

【技术实现步骤摘要】

本专利技术涉及Android应用程序开发领域,尤其涉及基于Android的图片加载方法及装置。
技术介绍
目前,在Android应用程序的开发中经常会使用到图片,图片资源各种各样,有来自于本地文件,有的来自于网络,有的来自于资源文件等。对于不同的文件,开发者通常需要使用不同的方式加载,不同的开发者加载方式也可能有一定的差异,这种差异性有可能会引入一些不确定因素,比如加载某些图片的时候会有异常等。
技术实现思路
本专利技术针对现有技术中的不足而提出基于Android的图片加载图片加载方法及装置,该方法通过统一的方式来加载多种图片资源,提高了图片处理效率和降低内存占用和能够在保证图片不失真显示的情况下,将内存占用降到较小的范围。本专利技术的技术方案如下:基于Android的图片加载方法,包括:通过LoadImage函数对图片进行加载;压缩图片,在图片显示前对图片进行采样率设置;图片显示,通过调用系统提供的接口setImage函数将经过采样后的图片显示在屏幕上;图片缓存,对于已经显示的图片,缓存预设时间段t内的N张图片,1m≤t≤24h,2≤N≤20;图片清理,通过调用recycle函数回收图片资源释放内存空间。通过LoadImage函数对图片进行加载,包括:通过自定义前缀来区分图片的方式,设计的前缀有如下三种:(a)File:该前缀表示图片是本地文件,后续加载图片的时候会调用本地图片加载接口对图片进行加载;(b)Assest:该前缀表示图片是资源文件,后续加载图片的时候会调用系统资源管理器对图片资源文件进行加载;(c)url:该前缀表示图片是网络资源文件,对于加载网络资源文件会先对图片进行下载操作后再进行加载。通过LoadImage函数对图片进行加载,包括:判断网络图片在本地缓存中,如果网络图片在本地缓存中,则直接进行本地加载图片;如果网络图片不在本地缓存中,则从网络上下载该图片,当网络下载成功后将下载的图片缓存到本地存储器上;下载步骤如下:(a)开启下载线程;(b)读取图片文件头部信息,获取图片文件大小;(c)设定预设值N,0≤N≤1M,如果图片文件小于预设值,则将文件全部读到内存中,然后将内存中的所有数据全部写入到文件中;(d)设定预设值N,0≤N≤1M,如果图片文件大于预设值,则分片读取文件,每次读取100k数据到内存中,然后将数据写入到文件中;(e)如果没有到文件末尾,继续步骤d,继续读取100k数据并写入到文件中;(f)如果读取到文件结束位,则停止读取,将内存中读出来的数据全部写入到文件中。所述的压缩图片,在图片显示前对图片进行采样率设置,包括:采样率设置的步骤如下:(a)获取图片的信息,根据图片文件的头部信息读出图片文件的分辨率,获取到图片文件的宽度和高度;(b)计算图片宽度与屏幕宽度的比值X1;(c)计算图片高度与屏幕高度的比值Y1;(d)比较X1与Y1的大小;(e)将X1与Y1中小的值设置为采样率。所述的图片显示,通过调用系统提供的接口setImage函数将经过采样后的图片显示在屏幕上,包括:显示的图片首先在图片缓存list中查找,如果在图片缓存list中查找到需要显示的图片,则直接显示该图片;如果在图片缓存list中没有查找到该图片,则通过加载后显示图片。所述的图片缓存,对于已经显示的图片,缓存预设时间段t内的N张图片,1m≤t≤24h,2≤N≤20,包括:添加图片前首先判断图片缓存list中是否已经存在N张图片,如果图片缓存list中的图片数量<N,则直接将显示的图片通过add方法添加到list中;如果判断图片缓存list中已存在N张图片,则先通过remove函数删除图片缓存list中的最后一个图片,当删除完成后再将显示的图片添加到图片缓存list中。一种基于Android的图片加载装置,包括:加载模块,通过LoadImage函数对图片进行加载;压缩模块,用于在图片显示前对图片进行采样率设置;显示模块,用于通过调用系统提供的接口setImage函数将经过采样后的图片显示在屏幕上;缓存模块,对于已经显示的图片,缓存预设时间段t内的N张图片,1m≤t≤24h,2≤N≤20;清理模块,用于通过调用recycle函数回收图片资源释放内存空间。所述的加载模块包括:读取单元,用于读取图片文件头部信息,获取图片文件大小;处理单元,用于判断图片文件大小,根据预设值进行处理,设定预设值N,0≤N≤1M,如果图片文件小于预设值,则将文件全部读到内存中,然后将内存中的所有数据全部写入到文件中;设定预设值N,0≤N≤1M,如果图片文件大于预设值,则分片读取文件,每次读取100k数据到内存中,然后将数据写入到文件中;如果没有到文件末尾,继续步骤d,继续读取100k数据并写入到文件中;存储单元,用于将内存中读出来的数据全部写入到文件中,如果读取到文件结束位,则停止读取,将内存中读出来的数据全部写入到文件中。所述的压缩模块包括:获取单元,用于获取图片的信息,根据图片文件的头部信息读出图片文件的分辨率,获取到图片文件的宽度和高度;计算单元,用于计算图片宽度与屏幕宽度的比值X1,计算图片高度与屏幕高度的比值Y1;比较单元,用于比较X1与Y1的大小;处理单元,用于将X1与Y1中小的值设置为采样率。所述的缓存模块包括:判断单元,添加图片前首先判断图片缓存list中是否已经存在N张图片,如果图片缓存list中的图片数量<N,则直接将显示的图片通过add方法添加到图片缓存list中;如果判断图片缓存list中已存在N张图片,则先通过remove函数删除图片缓存list中的最后一个图片,当删除完成后再将显示的图片添加到图片缓存list中。本专利技术的有益效果:1.通过自定义前缀的方式来达到同一个函数实现多种图片的加载,无需手动控制不同图片使用不同加载方式来加载,从而通过统一的方式来加载多种图片资源;2.显示图片可以从缓存中读取出来显示,提高了图片处理效率和降低内存占用;3.通过等比例缩放的计算方式来计算图片的采样率,从而能够在保证图片不失真显示的情况下,将内存占用降到较小的范围。附图说明图1为实施例基于Android的图片加载方法示意图;图2为实施例图片下载的步骤示意图;图3为实施例设置采样率的步骤示意图;图4为实施例缓存图片的步骤的示意图。具体实施方式为了更好的说明本专利技术,现结合实施例及附图作进一步的说明。实施例如图1所示,基于Android的图片加载方法,包括以下步骤:(1)分别将本地图片、资料图片、网络图片进行加载;(2)设置采样率,压缩图片;(3)将压缩后的图片进行显示;(4)如果缓存中存在此图片,以逻辑m表示,则直接从缓存中取出此图片进行显示;如果缓存中不存在此图片,以逻辑n表示,则执行步骤(1)(2)和(3);(5)对图片进行清理处理。本专利技术基于Android的图片加载方法采用统一的方式LoadImage(加载图片的函数名称)来对图片进行加载,其中主要通过自定义前缀来区分图片的方式,现设计的前缀主要有如下三种:(a)File:该前缀表示图片是本地文件,后续加载图片的时候会调用本地图片加载接口对图片进行加载。如:file://sdcard/icon.png。(b)Assest:该前缀表示图片是资源文件,后续加载图片的本文档来自技高网...

【技术保护点】
基于Android的图片加载方法,其特征在于,包括:通过LoadImage函数对图片进行加载;压缩图片,在图片显示前对图片进行采样率设置;图片显示,通过调用系统提供的接口setImage函数将经过采样后的图片显示在屏幕上;图片缓存,对于已经显示的图片,缓存预设时间段t内的N张图片,1m≤t≤24h,2≤N≤20;图片清理,通过调用recycle函数回收图片资源释放内存空间。

【技术特征摘要】
1.基于Android的图片加载方法,其特征在于,包括:通过LoadImage函数对图片进行加载;压缩图片,在图片显示前对图片进行采样率设置;图片显示,通过调用系统提供的接口setImage函数将经过采样后的图片显示在屏幕上;图片缓存,对于已经显示的图片,缓存预设时间段t内的N张图片,1m≤t≤24h,2≤N≤20;图片清理,通过调用recycle函数回收图片资源释放内存空间。2.如权利要求1所述的基于Android的图片加载方法,其特征在于,通过LoadImage函数对图片进行加载,包括:通过自定义前缀来区分图片的方式,设计的前缀有如下三种:(a)File:该前缀表示图片是本地文件,后续加载图片的时候会调用本地图片加载接口对图片进行加载;(b)Assest:该前缀表示图片是资源文件,后续加载图片的时候会调用系统资源管理器对图片资源文件进行加载;(c)url:该前缀表示图片是网络资源文件,对于加载网络资源文件会先对图片进行下载操作后再进行加载。3.如权利要求1所述的基于Android的图片加载方法,其特征在于,通过LoadImage函数对图片进行加载,包括:判断网络图片在本地缓存中,如果网络图片在本地缓存中,则直接进行本地加载图片;如果网络图片不在本地缓存中,则从网络上下载该图片,当网络下载成功后将下载的图片缓存到本地存储器上;下载步骤如下:(a)开启下载线程;(b)读取图片文件头部信息,获取图片文件大小;(c)设定预设值N,0≤N≤1M,如果图片文件小于预设值,则将文件全部读到内存中,然后将内存中的所有数据全部写入到文件中;(d)设定预设值N,0≤N≤1M,如果图片文件大于预设值,则分片读取文件,每次读取100k数据到内存中,然后将数据写入到文件中;(e)如果没有到文件末尾,继续步骤d,继续读取100k数据并写入到文件中;(f)如果读取到文件结束位,则停止读取,将内存中读出来的数据全部写入到文件中。4.如权利要求1所述的基于Android的图片加载方法,其特征在于,所述的压缩图片,在图片显示前对图片进行采样率设置,包括:采样率设置的步骤如下:(a)获取图片的信息,根据图片文件的头部信息读出图片文件的分辨率,获取到图片文件的宽度和高度;(b)计算图片宽度与屏幕宽度的比值X1;(c)计算图片高度与屏幕高度的比值Y1;(d)比较X1与Y1的大小;(e)将X1与Y1中小的值设置为采样率。5.如权利要求1所述的基于Android的图片加载方法,其特征在于,所述的图片显示,通过调用系统提供的接口setImage函数将经过采样后的图片显示在屏幕上,包括:显示的图片首先在图片缓存list中查找,如果在图片缓存list中查找到需要显示的图片,则直接显示该图片;如果在图片缓存list中没有查...

【专利技术属性】
技术研发人员:张磊
申请(专利权)人:武汉斗鱼网络科技有限公司
类型:发明
国别省市:湖北;42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1