一种图片内存的处理方法及装置转让专利

申请号 : CN201410395784.2

文献号 : CN105335442B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张翔

申请人 : 优视科技有限公司

摘要 :

本发明实施例公开了一种图片内存的处理方法及装置,该方法包括:获取需处理图片的图片文件,所述图片文件至少包括所述图片的像素压缩数据;通过对所述图片的像素压缩数据进行解码,得到所述图片的解码像素数据;利用所述图片的解码像素数据对所述图片进行处理;从应用程序内存中删除所述图片的解码像素数据。采用本发明的方法及装置,可避免图片的内存超过应用程序的容量限制,从而避免应用程序被迫关闭,无法正常工作的现象发生。

权利要求 :

1.一种图片内存的处理方法,其特征在于,包括:获取需处理图片的图片文件,所述图片文件包括图片描述数据和图片的像素压缩数据;

通过对所述图片的像素压缩数据进行解码,得到所述图片的解码像素数据;

利用所述图片的解码像素数据对所述图片进行处理;

从应用程序内存中删除所述图片的解码像素数据;

所述从应用程序内存中删除所述图片的解码像素数据,包括:判断所述应用程序的剩余内存是否小于第一预设阈值;

当所述应用程序的剩余内存小于所述第一预设阈值时,从所述应用程序内存中删除所述图片的解码像素数据;

从所述应用程序内存中删除所述图片的解码像素数据之后,还包括:判断所述应用程序的剩余内存是否小于所述第一预设阈值;

当所述应用程序的剩余内存小于所述第一预设阈值时,从所述应用程序内存中删除所述图片的像素压缩数据,并将剩余的图片文件从所述应用程序内存中转存至外部存储设备中。

2.根据权利要求1所述的方法,其特征在于,利用所述图片的解码像素数据对所述图片进行处理,包括:显示或者引用所述图片。

3.根据权利要求2所述的方法,其特征在于,在所述从应用程序内存中删除所述图片的解码像素数据之前,所述方法还包括:确定所述图片已经处理完毕;所述图片已经处理完毕包括所述图片已经显示完成或所述图片已经被引用完毕。

4.根据权利要求1所述的方法,其特征在于,还包括:在对所述图片进行处理时,将所述图片的像素压缩数据和解码像素数据置于与所述应用程序进程不同的独立进程中。

5.一种图片内存的处理装置,其特征在于,包括:获取模块,用于获取需处理图片的图片文件,所述图片文件包括图片描述数据和图片的像素压缩数据;

解码模块,用于对所述图片的像素压缩数据进行解码,得到所述图片的解码像素数据;

处理模块,用于利用所述图片的解码像素数据对所述图片进行处理;

删除模块,用于从应用程序内存中删除所述图片的解码像素数据;

所述删除模块包括:

判断单元,用于判断所述应用程序的剩余内存是否小于第一预设阈值;

删除单元,用于当所述应用程序的剩余内存小于所述第一预设阈值时,从所述应用程序内存中删除所述图片的解码像素数据;

所述判断单元还用于从所述应用程序内存中删除所述图片的解码像素数据之后,判断所述应用程序的剩余内存是否小于所述第一预设阈值;

所述删除单元还用于从所述应用程序内存中删除所述图片的解码像素数据之后,当所述应用程序的剩余内存小于所述第一预设阈值时,从所述应用程序内存中删除所述图片的像素压缩数据,并将剩余的图片文件从所述应用程序内存中转存至外部存储设备中。

6.根据权利要求5所述的装置,其特征在于,所述处理模块包括:显示单元,用于显示所述图片;

引用单元,用于引用所述图片。

7.根据权利要求6所述的装置,其特征在于,还包括:确定模块,用于在从应用程序内存中删除所述图片的解码像素数据之前,确定所述图片已经处理完毕,所述图片已经处理完毕包括图片已经显示完毕或所述图片已经被引用完毕。

8.根据权利要求5所述的装置,其特征在于,还包括:设置模块,用于将所述图片的像素压缩数据和解码像素数据置于与所述应用程序进程不同的独立进程中。

说明书 :

一种图片内存的处理方法及装置

技术领域

[0001] 本发明涉及移动通信技术领域,特别是涉及一种图片内存的处理方法及置。

背景技术

[0002] 在现有技术中,为了提高网页的显示效果,网页中所使用的图片的数量越来越多,图片的分辨率也越来越高,这使得网页中的图片所占用的浏览器内存也越来越大。
[0003] 由于在实际应用中,浏览器的存储容量是有限的,而当上述图片的内存超过浏览器的容量限制时,将会使得浏览器被迫关闭,无法正常工作。

发明内容

[0004] 本发明实施例中提供了一种图片内存的处理方法及装置,以避免图片的内存超过应用程序的容量限制,从而避免应用程序被迫关闭,无法正常工作的现象发生。
[0005] 为了解决上述技术问题,本发明实施例公开了如下技术方案:
[0006] 第一方面,提供了一种图片内存的处理方法,包括:
[0007] 获取需处理图片的图片文件,所述图片文件至少包括所述图片的像素压缩数据;
[0008] 通过对所述图片的像素压缩数据进行解码,得到所述图片的解码像素数据;
[0009] 利用所述图片的解码像素数据对所述图片进行处理;
[0010] 从应用程序内存中删除所述图片的解码像素数据。
[0011] 结合第一方面,在第一方面第一种可能的实现方式中,从应用程序内存中删除所述图片的解码像素数据,包括:
[0012] 判断所述应用程序的剩余内存是否小于第一预设阈值;
[0013] 当所述应用程序的剩余内存小于所述第一预设阈值时,从所述应用程序内存中删除所述图片的解码像素数据。
[0014] 结合第一方面的第一种可能的实现方式,在第一方面第二种可能的实现方式中,从所述应用程序内存中删除所述图片的解码像素数据之后,还包括:
[0015] 判断所述应用程序的剩余内存是否小于所述第一预设阈值;
[0016] 当所述应用程序的剩余内存小于所述第一预设阈值时,从所述应用程序内存中删除所述图片的像素压缩数据。
[0017] 结合第一方面,在第一方面的第三种可能的实现方式中,利用所述图片的解码像素数据对所述图片进行处理,包括:显示或者引用所述图片。
[0018] 结合第一方面第三种可能的实现方式,在第一方面第四种可能的实现方式中,从应用程序内存中删除所述图片的解码像素数据之前,所述方法还包括:确定所述图片已经处理完毕;所述图片已经处理完毕包括所述图片已经显示完成或所述图片已经被引用完毕。
[0019] 结合第一方面,在第一方面第五种可能的实现方式中,所述方法还包括:在对所述图片进行处理时,将所述图片的像素压缩数据和解码像素数据置于与所述应用程序进程不同的独立进程中。
[0020] 第二方面,提供了一种图片内存的处理装置,包括:
[0021] 获取模块,用于获取需处理图片的图片文件,所述图片文件至少包括所述图片的像素压缩数据;
[0022] 解码模块,用于对所述图片的像素压缩数据进行解码,得到所述图片的解码像素数据;
[0023] 处理模块,用于利用所述图片的解码像素数据对所述图片进行处理;
[0024] 删除模块,用于从应用程序内存中删除所述图片的解码像素数据。
[0025] 结合第二方面,在第二方面第一种可能的实现方式中,所述删除模块包括:
[0026] 判断单元,用于判断所述应用程序的剩余内存是否小于第一预设阈值;
[0027] 删除单元,用于当所述应用程序的剩余内存小于所述第一预设阈值时,从所述应用程序内存中删除所述图片的解码像素数据。
[0028] 结合第二方面,在第二方面第二种可能的实现方式中,所述处理模块包括:
[0029] 显示单元,用于显示所述图片;
[0030] 引用单元,用于引用所述图片。
[0031] 结合第二方面的第二种可能的实现方式,在第二方面第三种可能的实现方式中,所述装置还包括:
[0032] 确定模块,用于在从应用程序内存中删除所述图片的解码像素数据之前,确定所述图片已经处理完毕,所述图片已经处理完毕包括图片已经显示完毕或所述图片已经被引用完毕。
[0033] 结合第二方面,在第二方面第四种可能的实现方式中,所述装置还包括:
[0034] 设置模块,用于将所述图片的像素压缩数据和解码像素数据置于与所述应用程序进程不同的独立进程中。
[0035] 由于在实际应用中,图片的描述数据和像素压缩数据所占据的存储容量均较小,不会超过应用程序内存的容量限制,而图片的解码像素数据所占据的存储容量较大,如果在应用程序中存在大量图片的解码像素数据时,将会超过应用程序的容量限制,从而使得应用程序被迫关闭,无法正常工作;而在本申请中,每当对图片处理完成后,即将所述图片的解码像素数据删除;这样可以保证网页中图片所占用的内存不会超过系统的容量限制,从而避免了应用程序被迫关闭,无法正常工作的现象发生。

附图说明

[0036] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0037] 图1为本申请提供的图片内存的处理方法的一流程示意图;
[0038] 图2为本申请提供的图片内存的处理方法的另一流程示意图;
[0039] 图3为本申请提供的图片内存的处理方法的又一流程示意图;
[0040] 图4为本申请提供的图片内存的处理方法的另一流程示意图;
[0041] 图5为本申请提供的图片内存的处理装置的一结构示意图;
[0042] 图6为本申请提供的图片内存的处理装置的另一结构示意图;
[0043] 图7为本申请提供的图片内存的处理装置的又一结构示意图。

具体实施方式

[0044] 本申请提供了一种图片内存的处理方法及装置,以避免图片的内存超过应用程序的容量限制,从而避免应用程序被迫关闭,无法正常工作。
[0045] 首先对本申请的图片内存的处理方法进行说明,如图1所示,该方法至少包括:
[0046] S11:获取需处理图片的图片文件;
[0047] 在应用程序需加载网页图片时,发送加载请求至图片服务器;而接收到加载请求的图片服务器,将返回图片文件至应用程序;图片文件中可包括图片描述数据和图片的像素压缩数据。
[0048] 其中,图片的描述数据是对图片一些属性的描述,包括图片的高度、宽度、颜色数量、标题和版权等信息,这些信息是图片非常基础和重要的信息,占用的内存较少。
[0049] 图片的解码像素数据(由图片的像素压缩数据解码获得)描述了图片每个像素的颜色;当需要显示图片时,可根据图片的像素数据将图片的每个像素绘制到屏幕上。
[0050] S12:通过对所述图片的像素压缩数据进行解码,得到所述图片的解码像素数据;
[0051] 由于只有图片的像素数据才能被应用,因此,需对图片的像素压缩数据进行解码(解压缩)处理。
[0052] S13:利用所述图片的解码像素数据对图片进行处理;
[0053] 具体的,由于图片的像素数据具体有两种用途,第一种是用于将图片显示在屏幕上;第二种是被其它业务模块引用做其它用途,比如被引用加载在网页小游戏中显示等。所以,利用所述图片的解码像素数据对所述图片进行处理包括显示所述图片或者引用所述图片。
[0054] S14:从应用程序内存中删除所述图片的解码像素数据。
[0055] 所述应用程序可为浏览器,也可为需加载网页图片的其它程序,图片显示完成或被引用完毕之后,图片的解码像素数据再次被使用的几率非常小,但是图片的解码像素数据占用的内存会比较大,从浏览器内存中删除所述图片的解码像素数据可以减少对浏览器内存的占用。而当图片再次进行显示或被引用时,可重新对图片的像素压缩数据进行解压缩,得到图片的像素数据即可;因此,当图片的像素数据不被使用后,可从浏览器的内存中删除,从而减小浏览器内存的占用。在实际应用中,可将图片的像素压缩数据和解码像素数据置于与所述应用程序进程不同的独立进程中;这样当解码像素数据所在进程由于所占用内存过大被迫关闭时,应用程序所在进程并不会受到影响,用户仍可继续浏览网页。当上述两个进程间需交互数据时,可直接通过地址空间映射等方式获取图片数据,而无需在进程间拷贝数据,从而避免内存的额外占用;比如当应用程序的进程,需要从另一进程中获取图片的解码像素数据时,可直接从另一进程中获取图片的解码像素数据的存储地址,然后从存储地区获取图片的解码像素数据即可。
[0056] 由于在实际应用中,图片的描述数据和像素压缩数据所占据的存储容量均较小,不会超过浏览器的容量限制,而图片的解码像素数据所占据的存储容量较大,若在浏览器中存在大量图片的解码像素数据时,将会超过浏览器的容量限制,从而使得浏览器被迫关闭,无法正常工作;而在本申请中,每当对图片处理完成后,即将该图片的解码像素数据从浏览器内存中删除;这样可以保证网页中图片所占用的内存不会超过系统的容量限制,从而避免了浏览器被迫关闭,无法正常工作的现象发生。除此,采用本申请的方法,亦可提高浏览器运行的稳定性。
[0057] 在本申请的又一可行实施例中,如图2所示,在执行上述所有实施例中的步骤S13之后,步骤S14之前,所述实施例还包括:确定所述图片已经处理完毕;所述图片已经处理完毕是指所述图片已经显示完成或所述图片已经被引用完毕。确定所述图片已经处理完毕的具体过程如下:
[0058] S21:判断所述图片是否用于显示;如果是,则进入步骤S22,否则进入步骤S23。
[0059] S22:利用所述图片的描述数据和解码像素数据显示所述图片;当显示完毕后,执行步骤S14;
[0060] S23:检测所述图片的解码像素数据是否被引用;如果被引用,则每隔预设时长继续检测;如果不被引用,则执行步骤S14。
[0061] 具体的,图片的解码像素数据可为某些业务模块引用,比如网页游戏模块等,上述模块可利用图片的解码像素数据来显示图片。
[0062] 在本申请的另一可行实施例中,如图3所示,上述所有实施例中的步骤S14可包括:
[0063] S31:判断所述应用程序的剩余内存是否小于第一预设阈值;如果是,则执行步骤S32,否则结束流程,即当大于或等于所述第一阈值时,对所述图片的解码像素数据不做任何处理。
[0064] 具体的,第一预设阈值可具体为应用程序的剩余内存的安全界限预警值,即当应用程序的剩余内存大于或等于这个预警值时,说明应用程序内存充足,不存在崩溃的风险。而当应用程序的剩余内存小于这个预警值时,说明应用程序会存在崩溃的风险;应用程序会采取措施来释放内存,使得剩余内存在安全范围内。所述第一预设阈值可以是一个内存空间大小值,也可以是一个剩余内存与总内存的百分比值,用户可根据应用程序内存的大小自行设定第一预设阈值的大小或者百分比。
[0065] S32:从应用程序内存中删除所述图片的解码像素数据。
[0066] 需要说明的是,当需再次对图片进行处理时,需要首先查看应用程序内存中是否存在需处理图片的解码像素数据,若不存在,再执行步骤S11;若存在,则直接利用需处理图片的解码像素数据对图片进行处理即可。
[0067] 由上可见,在本申请实施例中,当对图片处理完成后,并不直接删除图片的解码像素数据,而只有当应用程序内存的当前存储量达到第一预设阈值时,才删除图片的解码像素数据;这样既可保证应用程序的正常工作,又可避免当对图片再次进行处理时,重新对图片的像素压缩数据进行解压缩。
[0068] 在本申请的又一可行实施例中,如图4所示,上述所有实施例中的步骤S32之后,还可包括:
[0069] 步骤S41:判断所述应用程序的剩余内存是否仍小于所述第一预设阈值;如是,则进入步骤S42;否则结束流程。
[0070] 步骤S42:从所述应用程序内存中删除所述图片的像素压缩数据。
[0071] 如果在应用程序内存中删除图片的解码像素数据后,应用程序的剩余内存仍小于第一预设阈值(安全界限预警值),说明应用程序此时仍存在崩溃的风险,此时可进一步删除所述图片的像素压缩数据。此外,还可将预设图片的图片文件从应用程序内存中转存至外部存储设备中,那么当图片再次使用时可以直接从外部存储设备获取图片的图片文件。转存的预设图片可具体为低显示频率或引用的图片,或低重要性的图片,外部存储设备可为硬盘、U盘和SD(Secure Digital Card,安全数字卡)等。
[0072] 由上可见,在本申请中,在应用程序的内存中删除图片的解码像素数据后,再判断一次此时应用程序的剩余内存是否仍小于第一预设阈值,且当小于第一预设阈值时,删除应用程序内存中的像素压缩数据;如此,应用程序的内存不但可以释放更多的存储空间,而且可进一步确保应用程序的正常工作。
[0073] 需要说明的是,在本申请中,可将所述图片的像素压缩数据和/或解码像素数据备份保存在外部存储器中;当图片需再次显示或被再次引用时,可直接获取外部存储设备中的解码像素数据;而当应用程序所在进程被迫关闭时,也可直接从外部存储设备中获取所述图片的解码像素数据。
[0074] 通过以上的方法实施例的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:只读存储器(ROM)、随机存取存储器(RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0075] 与上述方法相对应的,本申请还公开了一种图片内存的处理装置,如图5所示,至少包括:
[0076] 获取模块61,用于获取需处理图片的图片文件,所述图片文件至少包括图片的像素压缩数据;
[0077] 解码模块62,用于对所述图片的像素压缩数据进行解码,得到所述图片的解码像素数据;
[0078] 处理模块63,用于利用所述图片的解码像素数据对所述图片进行处理;
[0079] 删除模块64,用于从应用程序内存中删除所述图片的解码像素数据。
[0080] 由于在实际应用中,图片的描述数据和像素压缩数据所占据的存储容量较小,不会超过应用程序的容量限制,而图片的解码像素数据所占据的存储容量较大,若在应用程序中存在大量图片的解码像素数据时,将会超过应用程序的容量限制;从而使得应用程序被迫关闭,无法正常工作;而在本申请中,删除模块64,在每当对图片处理完成后,即将所述图片的解码像素数据从应用程序内存中删除;这样可以保证网页中图片所占用的内存不会超过系统的容量限制,从而避免了应用程序被迫关闭,无法正常工作的现象发生。
[0081] 在本申请的另一可行实施例中,如图6所示,上述所有实施例中的删除模块64包括:
[0082] 判断单元71,用于判断所述应用程序的剩余内存是否小于第一预设阈值;
[0083] 具体的,第一预设阈值可具体为应用程序的剩余内存的安全界限预警值,即当应用程序的剩余内存大于或等于这个预警值时,说明应用程序内存充足,不存在崩溃的风险。而当应用程序的剩余内存小于这个预警值时,说明应用程序会存在崩溃的风险;应用程序会采取措施来释放内存,使得剩余内存在安全范围内。所述第一预设阈值可以是一个内存空间大小值,也可以是一个剩余内存与总内存的百分比值,用户可根据应用程序内存的大小自行设定第一预设阈值的大小。
[0084] 删除单元72,用于当应用程序的剩余内存小于所述第一预设阈值时,从所述应用程序内存中删除所述图片的解码像素数据。
[0085] 如果在应用程序内存中删除图片的解码像素数据后,应用程序的剩余内存仍小于第一预设阈值(安全界限预警值),说明应用程序此时仍存在崩溃的风险,此时可进一步删除所述图片的像素压缩数据。具体地,删除单元72从所述应用程序内存中删除所述图片的解码像素数据之后,判断单元71继续判断所述应用程序的剩余内存是否小于所述第一预设阈值;当所述应用程序的剩余内存小于所述第一预设阈值时,删除单元72从所述应用程序内存中删除所述图片的像素压缩数据。
[0086] 由上可见,在本申请实施例中,当对图片处理完成后,并不直接删除图片的解码像素数据,而只有当判断单元71判断应用程序的剩余内存小于第一预设阈值时,删除单元72才删除图片的解码像素数据;这样既可保证应用程序的正常工作,又可避免当对图片再次进行处理时,重复对图片的像素压缩数据进行解码。
[0087] 在本申请的又一可行实施例中,如图7所示,上述所有实施例中的处理模块63还可包括:
[0088] 显示单元81,用于显示所述图片;
[0089] 引用单元82,用于引用所述图片。
[0090] 在本申请的又一可行实施例中,上述所有实施例中的装置,还可包括:
[0091] 确定模块(图中未示出),用于在从应用程序内存中删除所述图片的解码像素数据之前,确定所述图片已经处理完毕,所述图片已经处理完毕包括图片已经显示完毕或所述图片已经被引用完毕。
[0092] 设置模块(图中未示出),用于将所述图片的像素压缩数据和解码像素数据置于与所述应用程序进程不同的独立进程中。
[0093] 由于设置模块将所述图片的像素压缩数据和解码像素数据置于与所述应用程序进程不同的独立进程中。这样当解码像素数据所在进程由于解码像素数据所占用内存过大被迫关闭时,应用程序所在进程并不会受到影响,用户仍可继续浏览网页。
[0094] 本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0095] 以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。