一种移动终端获取图片缩略图的方法及装置制造方法
【专利摘要】本发明属于互联网【技术领域】,尤其涉及一种移动终端获取图片缩略图的方法及系统。本发明移动终端获取图片缩略图的方法包括:发起获取缩略图的通知;本地缓存中没有对应图片的缩略图或者对应图片的缩略图已经被释放掉时,获取图片文件的绝对路径,查询媒体数据库中图片文件的记录ID,通过图片文件的记录ID得到图片缩略图的路径;通过缩略图路径获取对应图片的缩略图。本发明实施例的技术方案具有如下优点或有益效果:本发明实施例的移动终端获取图片缩略图的方法及系统能够实时、快速、有效的获取图片缩略图提高了获取图片缩略图成功率,增强用户体验,提高了软件在用户体验上的一致性。
【专利说明】一种移动终端获取图片缩略图的方法及装置
【技术领域】
[0001]本发明属于移动终端【技术领域】,尤其涉及一种移动终端获取图片缩略图的方法及
装置。
【背景技术】
[0002]随着移动终端和互联网技术的不断发展,越来越多的用户通过移动终端上网浏览新闻或者图片等。由于图片比较大,移动终端通常采用获取图片缩略图的方式进行浏览。现有的移动终端获取图片缩略图的方式为:方式一、将原始图片读入内存,获取原始图片的高度以及宽度,计算好通过缩放后的目标图片的大小比例,依照该比例,创建一个新的按照比例缩放后的图片来达到获取图片缩略图的目的;方式二、移动终端操作系统管理维护系统媒体资源,同时针对图片和视频类型的媒体资源生成两套不同比例的缩略图,其中,媒体资源的相关信息,比如,文件名,大小,路径等,均存储在数据库中,要获取图片缩略图,可以通过访问数据库,获取具体的缩略图的路径。上述的两种方式存在以下缺点:对于方式一、创建一个按照大小比缩放后的图片非常耗费时间,假如图片足够大,该过程可能会阻塞Π(User Interface,用户界面)进程,从而导致应用程序出现卡死,或者崩溃的现象,例如对于Android系统,默认情况下Android进程的内存占用量为16M,但实际上,在Android的java层所能够占用的内 存不超过SM,因此,在需要处理大量图片的应用软件中,传统的图片缩放方式,如果不及时对图片所占用的内存进行回首,可能导致系统内存溢出,导致应用软件异常退出;对于方式二、因为即时更新图片资源,但图片资源的路径可能是任意的,系统媒体资源不能够及时响应,例如对于Android系统的手机通过PC导入了任意可视的图片资源后,通过访问系统媒体数据库资源的方式,在数据库可能找不到该图片的媒体资源记录,而要更新媒体数据库,需要通过发起系统广播通知系统扫描媒体资源,但整个过程非常漫长。
【发明内容】
[0003]本发明提供了一种移动终端获取图片缩略图的方法及系统,旨在解决现有技术获取图片缩略图方式导致系统内存溢出,使应用软件异常退出及扫描媒体资源耗费时间过长问题。
[0004]本发明是这样实现的,一种移动终端获取图片缩略图的方法,包括:
发起获取缩略图的通知;
本地缓存中没有对应图片的缩略图或者对应图片的缩略图已经被释放掉时,获取图片文件的绝对路径,查询媒体数据库中图片文件的记录ID,通过图片文件的记录ID得到图片缩略图的路径;
通过缩略图路径获取对应图片的缩略图。
[0005]本发明实施例米取的另一技术方案为:一种移动终端获取图片缩略图的系统,包括: 通知发起模块:用于发起获取缩略图的通知;
路径获取模块:用于在本地缓存中没有对应图片的缩略图或者对应图片的缩略图已经被释放掉时获取图片文件的绝对路径,查询媒体数据库中该图片文件的记录ID,通过图片文件的记录ID得到图片缩略图的路径;
缩略图获取模块:用于通过缩略图路径获取对应图片的缩略图。
[0006]本发明实施例的技术方案具有如下优点或有益效果:本发明实施例的移动终端获取图片缩略图的方法及系统在本地缓存中没有对应图片的缩略图或者对应图片的缩略图已经被释放掉时获取图片文件的绝对路径,查询媒体数据库中该图片文件的记录ID,通过图片文件的记录ID得到图片缩略图的路径,通过缩略图路径获取对应图片的缩略图,能够实时、快速、有效的获取图片缩略图提高了获取图片缩略图成功率,增强用户体验,提高了软件在用户体验上的一致性。
[0007]【专利附图】
【附图说明】
附图1是本发明第一实施例的移动终端获取图片缩略图的方法的流程图;
附图2是本发明第二实施例的移动终端获取图片缩略图的方法的流程图;
附图3是本发明第一实施例的移动终端获取图片缩略图的系统的结构示意图;
附图4是本发明第二实施例的移动终端获取图片缩略图的系统的结构示意图。
【具体实施方式】
[0008]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0009]请参阅图1,是本发明第一实施例的移动终端获取图片缩略图的方法的流程图。本发明第一实施例的移动终端获取图片缩略图的方法包括以下步骤:
步骤100:发起获取缩略图的通知;
在步骤100中,可以通过UI (User Interface,用户界面)线程发起获取缩略图通知,当然也可以插件等其他方式发起获取缩略图通知,例如通过quicklook插件,发起获取缩略图的通知步骤后还可以包括:创建子线程。
[0010]步骤110:查询本地缓存是否已有对应图片的缩略图缓存或者查询本地缓存中的对应图片的缩略图是否被释放,如果本地缓存中没有对应图片的缩略图或者对应图片的缩略图已经被释放掉,则进入步骤120,如果本地缓存中有对应图片的缩略图缓存或者对应图片的缩略图没有被释放,则进入步骤130 ;
步骤120:获取图片文件的绝对路径,查询媒体数据库中该图片文件的记录ID,通过图片文件的记录ID得到图片缩略图的绝对路径;
在步骤120中,通过异步线程获取图片文件的绝对路径,可以理解,在本发明实施方式中,也可以通过其他方式获取图片文件的绝对路径;可以通过查询媒体数据库中的图片表(Image表)确定有无该图片文件的记录,如果系统对该图片有过扫描,并加入了媒体数据库,则该图片在数据库中存在有效记录,并且系统对图片会生成专门的缩略图,并将缩略图作为记录添加到数据库中的thumbnails表,查询会得到一个有效的ID标识该文件在数据库中的记录,并且该ID也是thumbnails表中标识图片缩略图的唯一 ID,通过ID查询thumbnails表,得到缩略图的绝对路径。
[0011]步骤130:直接返回缩略图路径;
步骤140:通过缩略图路径获取对应图片的缩略图,将获取到的图片缩略图进行缓存。
[0012]在步骤140中,将获取到的图片缩略图以弱引用SoftReference的方式进行缓存,另外,当系统内存不够通知垃圾回收器GC回收资源的时候,将缩略图按需要及时释放掉占用的内存,不至于导致内存不足使应用软件崩溃。
[0013]请参阅图2,是本发明第二实施例的移动终端获取图片缩略图的方法的流程图。本发明第二实施例的移动终端获取图片缩略图的方法包括以下步骤:
步骤200:发起获取缩略图的通知,创建子线程;
在步骤200中,可以通过UI (User Interface,用户界面)线程发起获取缩略图通知,当然也可以插件等其他方式发起获取缩略图通知,例如通过quicklook插件。
[0014]步骤210:查询本地缓存是否已有对应图片的缩略图缓存或者查询本地缓存中的对应图片的缩略图是否被释放,如果本地缓存中没有对应图片的缩略图或者对应图片的缩略图已经被释放掉,则进入步骤220 ;如果本地缓存中有对应图片的缩略图缓存或者对应图片的缩略图没有被释放,则进入步骤280 ;
步骤220:将图片加入缩略图请求队列,并启动子线程获取缩略图;
步骤230:获取图片文件的绝对路径,通过该绝对路径,查询媒体数据库中该图片文件的记录ID (identity,身份标识);
在步骤230中,通过异步线程获取图片文件的绝对路径,可以理解,在本发明实施方式中,也可以通过其他方式获取图片文件的绝对路径;可以通过查询媒体数据库中的图片表(Image表)确定有无该图片文件的记录,如果系统对该图片有过扫描,并加入了媒体数据库,则该图片在数据库中存在有效记录,并且系统对图片会生成专门的缩略图,并将缩略图作为记录添加到数据库中的thumbnails表,查询会得到一个有效的ID标识该文件在数据库中的记录,并且该ID也是thumbnails表中标识图片缩略图的唯一 ID,通过ID查询thumbnails表,得到缩略图的绝对路径。
[0015]步骤240:获取该图片文件的记录ID ;
步骤250:判断获取的图片文件记录ID是否为空或者有效,如果获取的图片文件记录ID不为空或者有效,则进入步骤260,如果获取的图片文件记录ID为空或者无效,则进入步骤 270 ;
在步骤250中,如果获取的图片文件记录ID为空或者无效,则是由于系统未及时更新数据库所导致。
[0016]步骤260:查询媒体数据库,获取图片缩略图的绝对路径;
在步骤260中,可以通过查询数据库中的thumbnails表,得到图片缩略图的绝对路径。
[0017]步骤270:解析图片,得到图片的高度及宽度,通过计算后转换为缩略图的高度及宽度,生成需要的缩略图;
步骤280:直接返回缩略图路径;
步骤290:通过缩略图路径获取对应图片的缩略图,将获取到的图片缩略图进行缓存。
[0018]在步骤290中,将获取到的图片缩略图以弱引用SoftReference的方式进行缓存,另外,当系统内存不够通知垃圾回收器GC回收资源的时候,将缩略图按需要及时释放掉占用的内存,不至于导致内存不足使应用软件崩溃。
[0019]请参阅图3,是本发明第一实施例的移动终端获取图片缩略图的装置的结构示意图。本发明第一实施例的移动终端获取图片缩略图的装置包括通知发起模块、缩略图查询模块、路径获取模块、路径返回模块和缩略图获取模块,其中,
通知发起模块用于发起获取缩略图的通知。通知发起模块可以通过Π (UserInterface,用户界面)线程发起获取缩略图通知,当然也可以插件等其他方式发起获取缩略图通知,例如通过quicklook插件,发起获取缩略图的通知步骤后还可以包括:创建子线程。
[0020]缩略图查询模块用于查询本地缓存是否已有对应图片的缩略图缓存或者查询本地缓存中的对应图片的缩略图是否被释放,如果本地缓存中没有对应图片的缩略图或者对应图片的缩略图已经被释放掉,则通过路径获取模块获取图片文件的绝对路径,如果本地缓存中有对应图片的缩略图缓存或者对应图片的缩略图没有被释放,则通过路径返回模块直接返回缩略图路径。
[0021]路径获取模块用于获取图片文件的绝对路径,查询媒体数据库中该图片文件的记录ID,通过图片文件的记录ID得到图片缩略图的绝对路径。其中,路径获取模块通过异步线程获取图片文件的绝对路径,可以理解,在本发明实施方式中,也可以通过其他方式获取图片文件的绝对路径;可以通过查询媒体数据库中的图片表(Image表)确定有无该图片文件的记录,如果系统对该图片有过扫描,并加入了媒体数据库,则该图片在数据库中存在有效记录,并且系统对图片会生成专门的缩略图,并将缩略图作为记录添加到数据库中的thumbnails表,查询会得到一个有效的ID标识该文件在数据库中的记录,并且该ID也是thumbnails表中标识图片缩略图的唯一 ID,通过ID查询thumbnails表,得到缩略图的绝对路径。
[0022]路径返回模块用于直接返回缩略图路径。
[0023]缩略图获取模块用于通过缩略图路径获取对应图片的缩略图,将获取到的图片缩略图进行缓存。其中,缩略图获取模块将获取到的图片缩略图以弱引用SoftReference的方式进行缓存,另外,当系统内存不够通知垃圾回收器GC回收资源的时候,将缩略图按需要及时释放掉占用的内存,不至于导致内存不足使应用软件崩溃。
[0024]请参阅图4,是本发明第二实施例的移动终端获取图片缩略图的装置的结构示意图。本发明第二实施例的移动终端获取图片缩略图的装置包括通知发起模块、缩略图查询模块、子线程启动模块、路径获取模块、图片文件记录ID判断模、缩略图生成模块、路径返回模块和缩略图获取模块,其中,
通知发起模块用于发起获取缩略图的通知,创建子线程。通知发起模块可以通过Π(User Interface,用户界面)线程发起获取缩略图通知,当然也可以插件等其他方式发起犾取缩略图通知,例如通过quicklook插件,发起犾取缩略图的通知步骤后还可以包括:创建子线程。
[0025]缩略图查询模块用于查询本地缓存是否已有对应图片的缩略图缓存或者查询本地缓存中的对应图片的缩略图是否被释放,如果本地缓存中没有对应图片的缩略图或者对应图片的缩略图已经被释放掉,则通过子线程启动模块将图片加入缩略图请求队列,并启动子线程获取缩略图,如果本地缓存中有对应图片的缩略图缓存或者对应图片的缩略图没有被释放,则通过路径返回模块直接返回缩略图路径。
[0026]子线程启动模块用于将图片加入缩略图请求队列,并启动子线程获取缩略图。
[0027]路径获取模块用于获取图片文件的绝对路径,查询媒体数据库中该图片文件的记录ID,通过图片文件的记录ID得到图片缩略图的绝对路径。其中,路径获取模块通过异步线程获取图片文件的绝对路径,可以理解,在本发明实施方式中,也可以通过其他方式获取图片文件的绝对路径;可以通过查询媒体数据库中的图片表(Image表)确定有无该图片文件的记录,如果系统对该图片有过扫描,并加入了媒体数据库,则该图片在数据库中存在有效记录,并且系统对图片会生成专门的缩略图,并将缩略图作为记录添加到数据库中的thumbnails表,查询会得到一个有效的ID标识该文件在数据库中的记录,并且该ID也是thumbnails表中标识图片缩略图的唯一 ID,通过ID查询thumbnails表,得到缩略图的绝对路径。
[0028]图片文件记录ID判断模块用于判断获取的图片文件记录ID是否为空或者有效,如果获取的图片文件记录ID为空或者无效,则通过路径获取模块查询媒体数据库,获取图片缩略图的绝对路径;如果获取的图片文件记录ID不为空或者有效,则通过缩略图生成模块解析图片,得到图片的高度及宽度,通过计算后转换为缩略图的高度及宽度,生成需要的缩略图。
[0029]缩略图生成模块用于解析图片,得到图片的高度及宽度,通过计算后转换为缩略图的高度及宽度,生成需要的缩略图
路径返回模块用于直接返回缩略图路径。
[0030]缩略图获取模块用于通过缩略图路径获取对应图片的缩略图,将获取到的图片缩略图进行缓存。其中,缩略图获取模块将获取到的图片缩略图以弱引用SoftReference的方式进行缓存,另外,当系统内存不够通知垃圾回收器GC回收资源的时候,将缩略图按需要及时释放掉占用的内存,不至于导致内存不足使应用软件崩溃。
[0031]本发明实施例的技术方案具有如下优点或有益效果:本发明实施例的移动终端获取图片缩略图的方法及系统在本地缓存中没有对应图片的缩略图或者对应图片的缩略图已经被释放掉时获取图片文件的绝对路径,查询媒体数据库中该图片文件的记录ID,通过图片文件的记录ID得到图片缩略图的路径,通过缩略图路径获取对应图片的缩略图,能够实时、快速、有效的获取图片缩略图提高了获取图片缩略图成功率,增强用户体验,提高了软件在用户体验上的一致性。
[0032]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种移动终端获取图片缩略图的方法,包括: 发起获取缩略图的通知; 本地缓存中没有对应图片的缩略图或者对应图片的缩略图已经被释放掉时,获取图片文件的绝对路径,查询媒体数据库中图片文件的记录ID,通过图片文件的记录ID得到图片缩略图的路径; 通过缩略图路径获取对应图片的缩略图。
2.根据权利要求1所述的移动终端获取图片缩略图的方法,其特征在于,所述发起获取缩略图的通知步骤还包括:创建子线程,其中,通过用户界面线程发起获取缩略图通知。
3.根据权利要求1或2所述的移动终端获取图片缩略图的方法,其特征在于,所述发起获取缩略图的通知步骤后还包括:查询本地缓存是否已有对应图片的缩略图缓存或者查询本地缓存中的对应图片的缩略图是否被释放,如果本地缓存中没有对应图片的缩略图或者对应图片的缩略图已经被释放掉,则获取图片文件的绝对路径;如果本地缓存中有对应图片的缩略图缓存或者对应图片的缩略图没有被释放,则返回缩略图路径。
4.根据权利要求1或2所述的移动终端获取图片缩略图的方法,其特征在于,所述获取图片文件的绝对路径步骤前还包括:将图片加入缩略图请求队列,并启动子线程获取缩略图。
5.根据权利要求1或2所述的移动终端获取图片缩略图的方法,其特征在于,所述查询媒体数据库中图片文件 的记录ID步骤后还包括:获取该图片文件的记录ID,判断获取的图片文件记录ID是否为空或者有效,如果获取的图片文件记录ID不为空或者有效,查询媒体数据库,获取图片缩略图的绝对路径,如果获取的图片文件记录ID为空或者无效,则解析图片,得到图片的高度及宽度,通过计算后转换为缩略图的高度及宽度,生成需要的缩略图。
6.根据权利要求1所述的移动终端获取图片缩略图的方法,其特征在于,所述通过缩略图路径获取对应图片的缩略图步骤后还包括:将获取到的图片缩略图以弱引用的方式进行缓存。
7.一种移动终端获取图片缩略图的系统,包括: 通知发起模块:用于发起获取缩略图的通知; 路径获取模块:用于在本地缓存中没有对应图片的缩略图或者对应图片的缩略图已经被释放掉时获取图片文件的绝对路径,查询媒体数据库中该图片文件的记录ID,通过图片文件的记录ID得到图片缩略图的路径; 缩略图获取模块:用于通过缩略图路径获取对应图片的缩略图。
8.根据权利要求7所述的移动终端获取图片缩略图的系统,其特征在于,所述通知发起模块还用于创建子线程,其中,所述通知发起模块通过用户界面线程发起获取缩略图通知。
9.根据权利要求7或8所述的移动终端获取图片缩略图的系统,其特征在于,还包括缩略图查询模块和路径返回模块,所述缩略图查询模块用于查询本地缓存是否已有对应图片的缩略图缓存或者查询本地缓存中的对应图片的缩略图是否被释放,如果本地缓存中没有对应图片的缩略图或者对应图片的缩略图已经被释放掉,则通过路径获取模块获取图片文件的绝对路径;如果本地缓存中有对应图片的缩略图缓存或者对应图片的缩略图没有被释放,则通过路径返回模块返回缩略图路径。
10.根据权利要求7或8所述的移动终端获取图片缩略图的系统,其特征在于,还包括子线程启动模块,所述子线程启动模块用于将图片加入缩略图请求队列,并启动子线程获取缩略图。
11.根据权利要求10所述的移动终端获取图片缩略图的系统,其特征在于,还包括图片文件记录ID判断模块和缩略图生成模块,所述图片文件记录ID判断模块用于判断获取的图片文件记录ID是否为空或者有效,如果获取的图片文件记录ID为空或者无效,则通过路径获取模块查询媒体数据库,获取图片缩略图的绝对路径;如果获取的图片文件记录ID不为空或者有效,则通过缩略图生成模块解析图片,得到图片的高度及宽度,通过计算后转换为缩略图的高度及宽度,生成需要的缩略图。
12.根据权利要求7或8所述的移动终端获取图片缩略图的系统,其特征在于,所述缩略图获取模块还用于将获取到的图片缩略图以弱引用的方式进行缓存。
【文档编号】G06F17/30GK103678357SQ201210336545
【公开日】2014年3月26日 申请日期:2012年9月13日 优先权日:2012年9月13日
【发明者】肖曦, 朱中元, 刘彦良, 洪驰 申请人:腾讯科技(深圳)有限公司