一种图片转换方法及装置
技术领域
本发明是关于图像处理技术领域,尤其是关于图像格式转换技术领域,具体来说是关于一种图片转换方法及装置。
背景技术
PNG的的英文名称为Portable Network Graphics,即便携式网络图片。是一种非失真性压缩位图图形文件格式,现在被广泛应用于互联网及其他方面上。PNG格式是非失真性压缩的,允许使用类似于GIF格式的调色板技术,支持真彩色图像,并具备阿尔法通道(半透明)等特性。
9.PNG是安卓(android)平台的一种特殊的图片格式,这种格式的图片在android环境下具有自适应调节大小的能力。允许开发人员定义可扩展区域,当需要延伸图片以填充比图片本身更大区域时,可扩展区的内容被延展。并允许开发人员定义内容显示区,用于显示文字或其他内容。
在实际应用中,当应用程序需要加载一张9.PNG格式的图片时,如果用户将这张图片替换为普通的PNG或其他格式的图片,就会使加载不生效或发生程序异常。比如在实现换肤功能的程序中,如果程序需要一张9.PNG格式的图片而无法得到,就可能导致换肤不成功。
发明内容
为克服相关技术中存在的问题,本发明实施例提供一种图片转换方法及装置。
本发明实施例提供一种图片转换方法,所述的方法包括:获取图片的格式信息;根据所述的格式信息判断所述的图片是否为9.png格式;如果所述的图片不是9.png格式,则将所述的图片转换为9.png格式。
优选地,在获取图片的格式信息之前,所述的方法还包括:接收图片加载请求;根据所述的加载请求判断所需要加载的图片是否为9.png格式;如果需要加载的图片是9.png格式,则继续获取图片的格式信息。
优选地,所述获取图片的格式信息是:获取与图片加载请求相对应的目标图片的格式信息。
优选地,所述的根据所述的格式信息判断所述的图片是否为9.png格式包括:根据所述的格式信息判断所述的图片是否为png格式;如果所述的图片是png格式,则继续判断所述的图片是否为9.png格式;如果所述的图片不是png格式,则判断所述的图片不是9.png格式。
优选地,所述的将所述的图片转换为9.png格式包括:如果所述的图片是png格式,则将所述的图片从png格式转换为9.png格式;如果所述的图片不是png格式,则先将所述的图片转换为png格式,再将所述的图片从png格式转换为9.png格式。
优选地,所述的将所述的图片从png格式转换为9.png格式包括:根据png格式的图片构造一个包含9.png信息的数据块;将包含9.png信息的数据块***到png格式的图片的数据流中,得到9.png格式的图片。
本发明实施例还提供一种图片转换装置,所述的装置包括:格式信息获取单元,用于获取图片的格式信息;图片格式判断单元,用于根据所述的格式信息判断所述的图片是否为9.png格式;图片格式转换单元,用于在所述的图片不是9.png格式时,将所述的图片转换为9.png格式。
优选地,所述的装置还包括:加载请求接收单元,用于接收图片加载请求;加载请求判断单元,用于根据所述的加载请求判断所需要加载的图片是否为9.png格式;所述的格式信息获取单元用于在需要加载的图片是9.png格式时,继续获取图片的格式信息。
优选地,所述格式信息获取单元用于获取图片加载请求对应的目标图片的格式信息。
优选地,所述的图片格式判断单元包括:第一判断模块,用于根据所述的格式信息判断所述的图片是否为png格式;第二判断模块,用于在所述的图片是png格式时,判断所述的图片是否为9.png格式。
优选地,所述的图片格式转换单元包括:第一转换模块,用于在所述的图片是png格式时,将所述的图片从png格式转换为9.png格式;第二转换模块,用于所述的图片不是png格式时,将所述的图片转换为png格式。
优选地,所述的第一转换模块还用于根据png格式的图片构造一个包含9.png信息的数据块;并将包含9.png信息的数据块***到png格式的图片的数据流中,得到9.png格式的图片。
本发明实施例提供的一种图片转换方法及装置,可以自动判断并将非9.PNG格式的图片转换为9.PNG格式,避免程序出现加载不生效或发生程序异常的情况。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。在附图中:
图1是本发明实施例提供的一种图片转换方法流程图;
图2是本发明实施例提供的图1中步骤S102的流程图;
图3是本发明实施例提供的图1中步骤S103的流程图;
图4是本发明实施例提供的图3中步骤S302的流程图;
图5是本发明实施例提供的图3中步骤S303的流程图;
图6是本发明实施例提供的一种图片转换方法流程图;
图7是本发明实施例提供的一种图片转换装置框图;
图8是本发明实施例提供的一种图片转换装置框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。
本发明实施例提供一种图片转换方法及装置,以下结合附图对本发明进行详细说明。
实施例一
图1是本发明实施例提供的一种图片转换方法流程图,如图1所示,所述的方法包括:
S101,获取图片的格式信息。
在本发明实施例中,当终端中的应用程序需要加载9.png格式的图片时,终端首先要获取将要被加载的图片的格式信息,以便下一步判断将要被加载的图片的格式。
S102,根据所述的格式信息判断所述的图片是否为9.png格式。
在本发明实施例中,终端根据获取到的格式信息判断将要被加载的图片是否为9.png格式,格式信息可以包括图片文件的后缀名、图片文件长度以及图片文件第38,39,40,41字节的值等信息。
S103,如果所述的图片不是9.png格式,则将所述的图片转换为9.png格式。
在本发明实施例中,如果所述的图片是9.png格式,则应用程序可以直接加载9.png格式的图片。如果所述的图片不是9.png格式,则终端需要将图片先转换为9.png格式,之后再加载9.png格式的图片。
本发明实施例提供的一种图片转换方法,可以自动判断并将非9.PNG格式的图片转换为9.PNG格式,避免程序出现加载不生效或发生程序异常的情况。
图2是本发明实施例提供的图1中步骤S102的流程图,如图2所示,步骤S102包括:
S201,根据所述的格式信息判断所述的图片是否为png格式。
在本发明实施例中,终端首先根据获取到的图片的格式信息判断图片是否是png格式,优选地,格式信息可以包括图片文件的后缀名、图片文件长度以及图片文件第38,39,40,41字节的值等信息,终端可以根据图片的后缀名首先判断图片是否是png格式,如果所述的图片是png格式,则进行步骤S203,继续判断png图片是否是9.png格式;如果所述的图片不是png格式,则进行步骤S202。
S202,如果所述的图片不是png格式,则判断所述的图片不是9.png格式。
S203,如果所述的图片是png格式,则继续判断png图片的文件长度是否大于40字节,如果png图片的文件长度小于等于40字节,则判断所述的图片不是9.png格式;如果png图片的文件长度大于40字节,则进行步骤S204。
S204,判断png图片的第38,39,40,41字节的值是否是“npTc”四个字母对应的ASCII码值,如果png图片的第38,39,40,41字节的值是“npTc”四个字母对应的ASCII码值,则判断所述的图片是9.png格式;如果png图片的第38,39,40,41字节的值不是“npTc”四个字母对应的ASCII码值,则判断所述的图片不是9.png格式。
图3是本发明实施例提供的图1中步骤S103的流程图,如图2所示,步骤S103包括:
S301,如果所述的图片不是png格式,则将所述的图片转换为png格式,之后再执行步骤S302,将所述的图片从png格式转换为9.png格式。
在本发明实施例中,根据步骤S202的判断结果,如果所述的图片不是png格式,如是JPEG格式或其他图片格式,则可以先将图片从JPEG格式或其他图片格式转换为png格式,之后再执行步骤S302,这样凡是能转换为png格式的图片就都可以转换为9.png格式。
S302,如果所述的图片是png格式,则根据图片构造一个包含9.png信息的数据块。
图4是本发明实施例提供的图3中步骤S302的流程图,如图4所示,在本发明实施例中,步骤S302可以包括如下子步骤:
S3021,解析并获取原始PNG图片的宽度和高度,分别记为记为width,height;
S3022,构造一个52字节长度的空数组,记为chunk[];
S3023,将chunk数组的前四个字节分别填充为1,2,2,1等值;
S3024,将原始PNG图片的宽度width按照“大端序”模式填充到chunk数组的37~40字节;
S3025,将原始PNG图片的高度height按照“大端序”模式填充到chunk数组的45~48字节;
S3026,将数值0或1按照“大端序”模式填充到chunk数组的第49~52字节,得到包含9.png信息的数据块。
S303,将包含9.png信息的数据块***到png格式的图片的数据流中,得到9.png格式的图片。
图5是本发明实施例提供的图3中步骤S303的流程图,如图5所示,在本发明实施例中,步骤S303可以包括如下子步骤:
S3031,读取原始PNG图片的前41个字节,记为srcHeader[];
S3032,构造一个长度为105字节长度的空数组,记为destHeader[];
S3033,复制srcHeader的前33个字节到destHeader的前33个字节中;
S3034,将数值52按照“大端序”模式填充到destHeader数组的第34~37字节中;
S3035,将“npTc”对应的ASCII码值分别填充到destHeader数据的38~41字节中;
S3036,复制chunk内容到destHeader的42~93字节处;
S3037,复制srcHeader的34~41字节到destHeader的98~105字节处;
S3038,用destHeader数据的替换原始PNG图片中srcHeader数据,得到9.png格式的图片。
实施例二
图6是本发明实施例提供的一种图片转换方法流程图,如图6所示,所述的方法包括:
S601,接收图片加载请求。
在本发明实施例中,当终端中运行的应用程序需要加载图片时,会向终端发送一条图片加载请求,终端接收应用程序的图片加载请求。
S602,根据所述的加载请求判断需要加载的图片是否为9.png格式。
在本发明实施例中,图片加载请求中会包括应用程序所需要加载的图片的格式类型,终端根据图片加载请求判断应用程序是否要加载9.png格式的图片。
S603,如果需要加载的图片是9.png格式,则继续获取图片的格式信息。
在本发明实施例中,如果应用程序需要加载的图片不是9.png格式,则终端直接加载图片;如果应用程序需要加载的图片是9.png格式,则终端根据图片加载请求找到对应的目标图片,并获取目标图片的格式信息。
S604,根据所述的格式信息判断所述的图片是否为9.png格式。
在本发明实施例中,终端根据获取到的格式信息判断对应的目标图片是否为9.png格式。
S605,如果所述的图片不是9.png格式,则将所述的图片转换为9.png格式。
在本发明实施例中,如果目标图片是9.png格式,则应用程序可以直接加载9.png格式的图片。如果目标图片不是9.png格式,则将终端需要将图片先转换为9.png格式,之后再加载9.png格式的图片。
本发明实施例提供的一种图片转换方法,可以自动判断并将非9.PNG格式的图片转换为9.PNG格式,避免程序出现加载不生效或发生程序异常的情况。并且对图片格式的转换是实时的,即该转换行为仅发生在该资源正在被加载的过程中,因此不需要做任何离线的预处理。
实施例三
图7是本发明实施例提供的一种图片转换装置框图,如图7所示,所述的图片转换装置包括:
格式信息获取单元701,用于获取图片的格式信息。
在本发明实施例中,当终端中的应用程序需要加载9.png格式的图片时,格式信息获取单元701首先要获取被加载的图片的格式信息,以便图片格式判断单元702下一步判断被加载的图片的格式,格式信息可以包括图片文件的后缀名、图片文件长度以及图片文件第38,39,40,41字节的值等信息。
图片格式判断单元702,用于根据所述的格式信息判断所述的图片是否为9.png格式。
在本发明实施例中,图片格式判断单元702根据格式信息获取单元701获取到的格式信息判断被加载的图片是否为9.png格式。
图片格式转换单元703,用于在所述的图片不是9.png格式时,将所述的图片转换为9.png格式。
在本发明实施例中,如果图片格式判断单元702判断所述的图片是9.png格式,则应用程序可以直接加载9.png格式的图片。如果图片格式判断单元702判断所述的图片不是9.png格式,则图片格式转换单元703需要将图片先转换为9.png格式,之后再由应用程序加载9.png格式的图片。
本发明实施例提供的一种图片转换装置,可以自动判断并将非9.PNG格式的图片转换为9.PNG格式,避免程序出现加载不生效或发生程序异常的情况。
如图7所示,图片格式判断单元702可以包括:
第一判断模块7021,用于根据所述的格式信息判断所述的图片是否为png格式。
在本发明实施例中,第一判断模块7021根据格式信息获取单元701获取到的图片的格式信息判断图片是否是png格式,优选地,第一判断模块7021可以根据图片的后缀名判断图片是否是png格式,如果第一判断模块7021判断所述的图片是png格式,则由第二判断模块7022继续判断所述的图片是否是9.png格式;如果第一判断模块7021判断所述的图片不是png格式,则图片格式判断单元702直接判断所述的图片不是9.png格式。
第二判断模块7022,用于在所述的图片是png格式时,判断所述的图片是否为9.png格式。
在本发明实施例中,如果第一判断模块7021判断所述的图片是png格式,则第二判断模块7022继续判断png图片的文件长度是否大于40字节,如果png图片的文件长度小于等于40字节,则判断所述的图片不是9.png格式;如果png图片的文件长度大于40字节,则第二判断模块7022继续判断png图片的第38,39,40,41字节的值是否是“npTc”四个字母对应的ASCII码值,如果png图片的第38,39,40,41字节的值是“npTc”四个字母对应的ASCII码值,则判断所述的图片是9.png格式;如果png图片的第38,39,40,41字节的值不是“npTc”四个字母对应的ASCII码值,则判断所述的图片不是9.png格式。
如图7所示,图片格式转换单元703可以包括:
第一转换模块7031,用于在所述的图片不是png格式时,将所述的图片转换为png格式,之后再由第二转换模块7032将所述的图片从png格式转换为9.png格式。
在本发明实施例中,如果所述的图片不是png格式,如是JPEG格式或其他图片格式,则第一转换模块7031可以先将格式从JPEG或其他图片格式转换为png格式,之后再由第二转换模块7032将所述的图片从png格式转换为9.png格式,这样凡是能转换为png格式的图片就都可以转换为9.png格式。
第二转换模块7032,用于在所述的图片不是png格式时,将所述的图片转换为png格式。优选地,如果所述的图片是png格式,则第二转换模块7032可以根据图片构造一个包含9.png信息的数据块;并将包含9.png信息的数据块***到png格式的图片的数据流中,得到9.png格式的图片。
在本发明实施例中,第二转换模块7032首先解析并获取原始PNG图片的宽度和高度,分别记为记为width,height;之后构造一个52字节长度的空数组,记为chunk[];将chunk数组的前四个字节分别填充为1,2,2,1等值;再将原始PNG图片的宽度width按照“大端序”模式填充到chunk数组的37~40字节;同时将原始PNG图片的高度height按照“大端序”模式填充到chunk数组的45~48字节;最后将数值0或1按照“大端序”模式填充到chunk数组的第49~52字节,得到包含9.png信息的数据块。
在本发明实施例中,第二转换模块7032根据图片构造出包含9.png信息的数据块之后,第二转换模块7032首先读取原始PNG图片的前41个字节,记为srcHeader[];并构造一个长度为105字节长度的空数组,记为destHeader[];之后复制srcHeader的前33个字节到destHeader的前33个字节中;将数值52按照“大端序”模式填充到destHeader数组的第34~37字节中;将“npTc”对应的ASCII码值分别填充到destHeader数据的38~41字节中;复制chunk内容到destHeader的42~93字节处;复制srcHeader的34~41字节到destHeader的98~105字节处;最后用destHeader数据的替换原始PNG图片中srcHeader数据,得到9.png格式的图片。
实施例四
图8是本发明实施例提供的一种图片转换装置框图,如图8所示,所述的图片转换装置包括:
加载请求接收单元801,用于接收图片加载请求。
在本发明实施例中,当终端中运行的应用程序需要加载图片时,会向终端发送一条图片加载请求,加载请求接收单元801接收应用程序的图片加载请求。
加载请求判断单元802,用于根据所述的加载请求判断需要加载的图片是否为9.png格式。
在本发明实施例中,图片加载请求中会包括应用程序所需要加载的图片的格式类型,加载请求判断单元802根据图片加载请求判断应用程序是否要加载9.png格式的图片。
格式信息获取单元803,用于在需要加载的图片是9.png格式时,继续获取图片的格式信息。
在本发明实施例中,如果应用程序需要加载的图片不是9.png格式,则应用程序直接加载图片;如果应用程序需要加载的图片是9.png格式,则格式信息获取单元803根据图片加载请求找到对应的目标图片,并获取目标图片的格式信息。
图片格式判断单元804,用于根据所述的格式信息判断所述的图片是否为9.png格式。
在本发明实施例中,图片格式判断单元804根据获取到的格式信息判断对应的目标图片是否为9.png格式。
图片格式转换单元805,用于在所述的图片不是9.png格式时,将所述的图片转换为9.png格式。
在本发明实施例中,如果目标图片是9.png格式,则应用程序可以直接加载9.png格式的图片。如果目标图片不是9.png格式,则将图片格式转换单元805需要将图片先转换为9.png格式,之后应用程序再加载9.png格式的图片。
本发明实施例提供的一种图片转换装置,可以自动判断并将非9.PNG格式的图片转换为9.PNG格式,避免程序出现加载不生效或发生程序异常的情况。并且对图片格式的转换是实时的,即该转换行为仅发生在该资源正在被加载的过程中,因此不需要做任何离线的预处理。
此外,典型地,本发明所述的终端可为各种终端设备,例如手机、个人数字助理(PDA)等,因此本发明的保护范围不应限定为某种特定类型的终端。
此外,根据本发明的方法还可以被实现为由CPU执行的计算机程序。在该计算机程序被CPU执行时,执行本发明的方法中限定的上述功能。
此外,上述方法步骤以及***单元也可以利用控制器以及用于存储使得控制器实现上述步骤或单元功能的计算机程序的计算机可读存储设备实现。
此外,应该明白的是,本文所述的计算机可读存储设备(例如,存储器)可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。作为例子而非限制性的,非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦写可编程ROM(EEPROM)或快闪存储器。易失性存储器可以包括随机存取存储器(RAM),该RAM可以充当外部高速缓存存储器。作为例子而非限制性的,RAM可以以多种形式获得,比如同步RAM(DRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据速率SDRAM(DDR SDRAM)、增强SDRAM(ESDRAM)、同步链路DRAM(SLDRAM)以及直接RambusRAM(DRRAM)。所公开的方面的存储设备意在包括但不限于这些和其它合适类型的存储器。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个***的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现所述的功能,但是这种实现决定不应被解释为导致脱离本发明的范围。
结合这里的公开所描述的各种示例性逻辑块、模块和电路可以利用被设计成用于执行这里所述功能的下列部件来实现或执行:通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或晶体管逻辑、分立的硬件组件或者这些部件的任何组合。通用处理器可以是微处理器,但是可替换地,处理器可以是任何传统处理器、控制器、微控制器或状态机。处理器也可以被实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、一个或多个微处理器结合DSP核、或任何其它这种配置。
结合这里的公开所描述的方法或算法的步骤可以直接包含在硬件中、由处理器执行的软件模块中或这两者的组合中。软件模块可以驻留在RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动盘、CD-ROM、或本领域已知的任何其它形式的存储介质中。示例性的存储介质被耦合到处理器,使得处理器能够从该存储介质中读取信息或向该存储介质写入信息。在一个替换方案中,所述存储介质可以与处理器集成在一起。处理器和存储介质可以驻留在ASIC中。ASIC可以驻留在用户终端中。在一个替换方案中,处理器和存储介质可以作为分立组件驻留在用户终端中。
在一个或多个示例性设计中,所述功能可以在硬件、软件、固件或其任意组合中实现。如果在软件中实现,则可以将所述功能作为一个或多个指令或代码存储在计算机可读介质上或通过计算机可读介质来传送。计算机可读介质包括计算机存储介质和通信介质,该通信介质包括有助于将计算机程序从一个位置传送到另一个位置的任何介质。存储介质可以是能够被通用或专用计算机访问的任何可用介质。作为例子而非限制性的,该计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储设备、磁盘存储设备或其它磁性存储设备,或者是可以用于携带或存储形式为指令或数据结构的所需程序代码并且能够被通用或专用计算机或者通用或专用处理器访问的任何其它介质。此外,任何连接都可以适当地称为计算机可读介质。例如,如果使用同轴线缆、光纤线缆、双绞线、数字用户线路(DSL)或诸如红外线、无线电和微波的无线技术来从网站、服务器或其它远程源发送软件,则上述同轴线缆、光纤线缆、双绞线、DSL或诸如红外先、无线电和微波的无线技术均包括在介质的定义。如这里所使用的,磁盘和光盘包括压缩盘(CD)、激光盘、光盘、数字多功能盘(DVD)、软盘、蓝光盘,其中磁盘通常磁性地再现数据,而光盘利用激光光学地再现数据。上述内容的组合也应当包括在计算机可读介质的范围内。
尽管前面公开的内容示出了本发明的示例性实施例,但是应当注意,在不背离权利要求限定的本发明的范围的前提下,可以进行多种改变和修改。根据这里描述的发明实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明的元素可以以个体形式描述或要求,但是也可以设想多个,除非明确限制为单数。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。