管理图像的方法及图像池技术

技术编号:8625911 阅读:124 留言:0更新日期:2013-04-25 22:58
本发明专利技术公开了一种管理图像的方法及图像池,属于应用程序领域。该方法包括:接收使用者发送的图像请求,该图像请求中包括请求的图像的标识;根据该图像的标识获取图像根,并将该图像根返回给使用者,其中,获取的该图像根在创建时不加载真实图像;接收使用者发送的绘图请求;判断该绘图请求请求的图像根中是否存在真实图像并且该真实图像是否能立即进行绘制,如果是,则将该真实图像绘制到设备上下文中的绘图区域,否则,获取默认图像并将该默认图像绘制到设备上下文中的绘图区域。本发明专利技术通过用图像根来保存图像,图像根被创建时并不加载任何图像,只有当图像被真正使用、也就是要进行绘制时才会将图像加载到内存,有效的减少了内存的占用量。

【技术实现步骤摘要】

本专利技术涉及应用程序领域,特别涉及一种管理图像的方法及图像池
技术介绍
随着3G(3rd Generation,第三代移动通信技术)时代的来临,手机、掌上电脑等移动终端上的应用程序的功能越来越强大,对图像的处理越来越多。但是移动终端大多数内存都比较小,而图像的处理需要大量的内存和计算量,会导致因内存占用过大而影响整个程序的性能。为了解决这个问题,在移动终端上设计和开发终端应用程序时,经常会设计并使用图像池(Image Pool)。图像池是一种多个使用者之间的资源共享技术,通过建立一个图像对象的管理机制,统一管理图像对象的创建、缓存及删除,使得图像池中的图像对象得到闻效、安全的复用,达到减少内存使用、提闻效率的目的。现有技术中图像池的实现方案包括静态加载图像的方案和动态加载图像的方案两种。静态加载图像的方案图像池初始化时,首先创建一个能保存图像的图像数组,该图像数组的大小是事先设定好的,一旦初始化成功后该图像数组的大小就不再发生变化了 ;然后,把要显示的各图像加载到内存中,生成对应的图像对象,并按照加载的顺序保存到图像数组中。使用者使用图像池时,会传递一个索引(例如数组的下标)给图像池,图像池检查该索引值是否合法,如果合法,则根据该索引值从图像数组中取出图像并返回给使用者。使用者不用销毁图像,图像池在退出的时候会首先删除所有的内存中的图像对象,然后删除图像数组。动态加载图像的方案这种方案不限制图像池中的图像数量,也不会提前把图像加载进内存。图像池初始化时,创建能保存图像的图像队列,该图像队列一般用链表来实现,这个创建的过程无需加载任何图像。使用者使用图像池时,传递一个唯一标识给图像池,图像池根据该唯一标识在图像队列中查找,如果找到对应的图像则把图像返回给使用者,如果没有找到,则根据该唯一标识调用加载接口把图像加载到内存并把图像保存到图像队列中,然后把图像返回给使用者。然而,上述两种图像池的实现方案只能处理单一类型的图像,并且在应用时的内存占用量仍然较大,内存的利用率低。
技术实现思路
为了解决现有技术的问题,本专利技术实施例提供了一种管理图像的方法及图像池。所述技术方案如下一方面,提供了一种管理图像的方法,所述方法包括接收使用者发送的图像请求,所述图像请求中包括请求的图像的标识;根据所述图像的标识获取图像根,并将所述图像根返回给所述使用者,其中,获取的所述图像根在创建时不加载真实图像;接收所述使用者根据返回的图像根发送的绘图请求,所述绘图请求中包括设备上下文和绘图区域;判断所述绘图请求请求的图像根中是否存在真实图像并且所述真实图像是否能立即进行绘制,如果是,则将所述真实图像绘制到所述设备上下文中的所述绘图区域,否贝U,获取默认图像并将所述默认图像绘制到所述设备上下文中的所述绘图区域。进一步地,所述方法还包括判断出所述绘图请求请求的图像根中不存在真实图像时,加载所述真实图像;加载成功后通知所述使用者,由所述使用者再次发送绘图请求,并执行接收所述使用者根据返回的图像根发送的绘图请求的步骤。其中,加载所述真实图像,包括判断所述真实图像的本地图像文件是否可用,如果是,则加载所述本地图像文件,加载完成后将所述本地图像文件作为所述真实图像保存到相应的图像根中;否则,从服务器下载所述真实图像,并将下载的所述真实图像保存为本地图像文件,下载完成后执行所述判断所述真实图像的本地图像文件是否可用的步骤。具体地,图像的标识为本地图像文件的路径、资源图像文件的资源标识号和服务器图像文件的通用资源标志符URI中的一种;相应地,判断所述真实图像的本地图像文件是否可用,包括如果所述图像的标识为本地图像文件的路径,则根据所述本地图像文件的路径查找本地图像文件是否存在,如果是,则执行所述加载所述本地图像文件的步骤;如果所述图像的标识为资源图像文件的资源标识号,则根据所述资源标识号查找对应的资源图像文件是否存在,如果是,则执行所述加载所述本地图像文件的步骤;如果所述图像的标识为服务器图像文件的URI,则在本地查找是否存在与所述URI对应的图像的缓存文件,如果是,则执行所述加载所述本地图像文件的步骤。再进一步地,所述方法还包括判断资源占用量是否大于预设的资源最大占用量,如果是,则淘汰内存中的部分真实图像。更进一步地,将所述真实图像绘制到所述设备上下文中的所述绘图区域之后,还包括将所述真实图像所在的图像根中的使用频次计数器的值加一,所述使用频次计数器用于记录所述真实图像的使用频次,并且当所述使用频次计数器的值达到预设的最大值时则不再增加;相应地,淘汰内存中的部分真实图像,包括将内存中的图像根按照使用频次计数器的值从小到大进行排序;从最小值开始,逐个删除图像根中的真实图像,并使所述图像根中的使用频次计数器归零;当删除的真实图像所占的比例大于预设的淘汰比例,或,剩余的资源占用量小于预设的资源最小占用量时,停止删除;停止删除后,扫描剩余的全部图像根,把剩余的全部图像根中的使用频次计数器的值减一。更进一步地,根据所述图像的标识获取图像根,并将所述图像根返回给所述使用者,包括在本地的图像队列中查找是否存在所述标识对应的图像根,如果存在,则将查找到的所述图像根返回给所述使用者,如果不存在,则创建所述图像的图像根,并将创建的所述图像根返回给所述使用者,其中,创建所述图像根时不加载真实图像。另一方面,提供了一种图像池,所述图像池包括异步创建模块,用于接收使用者发送的图像请求,所述图像请求中包括请求的图像的标识;根据所述图像的标识获取图像根,并将所述图像根返回给所述使用者,其中,获取的所述图像根在创建时不加载真实图像;绘图模块,用于接收所述使用者根据所述异步创建模块返回的图像根发送的绘图请求,所述绘图请求中包括设备上下文和绘图区域;判断所述绘图请求请求的图像根中是否存在真实图像并且所述真实图像是否能立即进行绘制,如果是,则将所述真实图像绘制到所述设备上下文中的所述绘图区域,否则,获取默认图像并将所述默认图像绘制到所述设备上下文中的所述绘图区域。进一步地,所述图像池还包括自重建模块,用于在所述绘图模块判断出所述绘图请求请求的图像根中不存在真实图像时,加载所述真实图像;通知模块,用于在所述自重建模块加载所述真实图像成功后,通知所述使用者,由所述使用者再次发送绘图请求,并执行所述绘图模块。 其中,所述自重建模块,包括判断单元,用于判断所述真实图像的本地图像文件是否可用;第一重建单元,用于当所述判断单元判断所述真实图像的本地图像文件可用时,加载所述本地图像文件,加载完成后将所述本地图像文件作为所述真实图像保存到相应的图像根中;第二重建单元,用于当所述判断单元判断所述真实图像的本地图像文件不可用时,从服务器下载所述真实图像,并将下载的所述真实图像保存为本地图像文件,下载完成后返回执行所述判断单元。具体地,图像的标识为本地图像文件的路径、资源图像文件的资源标识号和服务器图像文件的通用资源标志符URI中的一种;相应地,所述判断单元,包括第一判断子单元,用于当所述图像的标识为本地图像文件的路径时,根据所述本地图像文件的路径查找本地图像文件是否存在,如果是,则执行所述第一重建单元;第二判断子单元,用于当所述图像的标识为资源图像文件的资源标识号时,根据所述资源标识号查找对本文档来自技高网
...

【技术保护点】
一种管理图像的方法,其特征在于,所述方法包括:接收使用者发送的图像请求,所述图像请求中包括请求的图像的标识;根据所述图像的标识获取图像根,并将所述图像根返回给所述使用者,其中,获取的所述图像根在创建时不加载真实图像;接收所述使用者根据返回的图像根发送的绘图请求,所述绘图请求中包括设备上下文和绘图区域;判断所述绘图请求请求的图像根中是否存在真实图像并且所述真实图像是否能立即进行绘制,如果是,则将所述真实图像绘制到所述设备上下文中的所述绘图区域,否则,获取默认图像并将所述默认图像绘制到所述设备上下文中的所述绘图区域。

【技术特征摘要】
1.一种管理图像的方法,其特征在于,所述方法包括 接收使用者发送的图像请求,所述图像请求中包括请求的图像的标识; 根据所述图像的标识获取图像根,并将所述图像根返回给所述使用者,其中,获取的所述图像根在创建时不加载真实图像; 接收所述使用者根据返回的图像根发送的绘图请求,所述绘图请求中包括设备上下文和绘图区域; 判断所述绘图请求请求的图像根中是否存在真实图像并且所述真实图像是否能立即进行绘制,如果是,则将所述真实图像绘制到所述设备上下文中的所述绘图区域,否则,获取默认图像并将所述默认图像绘制到所述设备上下文中的所述绘图区域。2.根据权利要求1所述的方法,其特征在于,所述方法还包括 判断出所述绘图请求请求的图像根中不存在真实图像时,加载所述真实图像; 加载成功后通知所述使用者,由所述使用者再次发送绘图请求,并执行接收所述使用者根据返回的图像根发送的绘图请求的步骤。3.根据权利要求2所述的方法,其特征在于,加载所述真实图像,包括 判断所述真实图像的本地图像文件是否可用,如果是,则加载所述本地图像文件,加载完成后将所述本地图像文件作为所述真实图像保存到相应的图像根中; 否则,从服务器下载所述真实图像,并将下载的所述真实图像保存为本地图像文件,下载完成后执行所述判断所述真实图像的本地图像文件是否可用的步骤。4.根据权利要求3所述的方法,其特征在于,图像的标识为本地图像文件的路径、资源图像文件的资源标识号和服务器图像文件的通用资源标志符URI中的一种; 相应地,判断所述真实图像的本地图像文件是否可用,包括 如果所述图像的标识为本地图像文件的路径,则根据所述本地图像文件的路径查找本地图像文件是否存在,如果是,则执行所述加载所述本地图像文件的步骤; 如果所述图像的标识为资源图像文件的资源标识号,则根据所述资源标识号查找对应的资源图像文件是否存在,如果是,则执行所述加载所述本地图像文件的步骤; 如果所述图像的标识为服务器图像文件的URI,则在本地查找是否存在与所述URI对应的图像的缓存文件,如果是,则执行所述加载所述本地图像文件的步骤。5.根据权利要求1所述的方法,其特征在于,所述方法还包括 判断资源占用量是否大于预设的资源最大占用量,如果是,则淘汰内存中的部分真实图像。6.根据权利要求5所述的方法,其特征在于,将所述真实图像绘制到所述设备上下文中的所述绘图区域之后,还包括 将所述真实图像所在的图像根中的使用频次计数器的值加一,所述使用频次计数器用于记录所述真实图像的使用频次,并且当所述使用频次计数器的值达到预设的最大值时则不再增加; 相应地,淘汰内存中的部分真实图像,包括 将内存中的图像根按照使用频次计数器的值从小到大进行排序; 从最小值开始,逐个删除图像根中的真实图像,并使所述图像根中的使用频次计数器归零;当删除的真实图像所占的比例大于预设的淘汰比例,或,剩余的资源占用量小于预设的资源最小占用量时,停止删除; 停止删除后,扫描剩余的全部图像根,把剩余的全部图像根中的使用频次计数器的值减7.根据权利要求1所述的方法,其特征在于,根据所述图像的标识获取图像根,并将所述图像根返回给所述使用者,包括 在本地的图像队列中查找是否存在所述标识对应的图像根,如果存在,则将查找到的所述图像根返回给所述使用者,如果不存在,则创建所述图像的图像根,并将创建的所述图像根返回给所述使用者,其中,创建所述图像根时不加载真实图像。8.一种图像池,其特征在于,所述图像池包括 异步创建模块,用于接收使用者发送的图像请求,所述图像请求中包括请求的图像的标识;根据所述图像的标识获取图像根,并将所述图像根返回给所述使用者,其中,获取的所述图像根在创建时不加载真实图像; 绘图模块,用...

【专利技术属性】
技术研发人员:赵俊锋张旭
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:

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

1