一种保留alpha通道的图片压缩方法

文档序号:7857155阅读:576来源:国知局
专利名称:一种保留alpha通道的图片压缩方法
技术领域
本发明涉及一种图像处理领域,具体涉及一种保留alpha通道的图片压缩方法。
背景技术
alpha通道是一个8位的灰度通道,该通道用0_255级灰度来记录图像中的透明度信息,定义透明、不透明和半透明区域,其中黑表示全透明,白表示不透明,灰表示半透明。网页游戏的场景制作中,经常利用alpha通道的透明特性制作出丰富的效果,经过alpha通道的叠加与合成,可使图片中某一部分依据不同原理透明。即将所选颜色从图片中去除,从而使去除颜色的图片部分透出背景,没有去掉颜色的部分依旧保留原来的色彩。如图I所示,图片文件由带有ARGB通道数据的像素组成,每个像素都是一个ARGB(alpha, red, green, blue)色,分为 alpha 通道,red 通道,green 通道,blue 通道,其中 alpha通道为透明通道。像素值包括32位二进制数,取值范围从0x00000000到OxFFFFFFFF,可划分为alpha通道数据、red通道数据、green通道数据、blue通道数据。其中每个通道数据为8位二进制数,取值范围是0-255。由于带有alpha通道数据的ARGB图片文件比普通的RGB图片文件大得多,因此对于那些对图片质量和数量都要求较高的情况下,提高图片文件的压缩率对于图片文件的存储和传输都具有非常重大的实际意义。现有技术中对于含有alpha通道的图片文件压缩方法通常为一、对图片文件进行无损压缩得到压缩文件,在解压缩后可还原包括alpha通道数据在内的原始数据而不引起任何失真;但是由于无损压缩的压缩率通常仅为60%左右,使得压缩文件的大小仍旧很 大,不能满足大的图片文件存储和传输的要求。二、对图片文件进行有损压缩,虽然有损压缩的压缩率能够达到14%左右,但是现有的有损压缩方法通常要牺牲alpha通道数据,解压缩后得到的解压文件相对于原始的图片文件严重失真,无法实现原始图片的特定效果。因此,目前还没有一种能够既保留alpha通道数据,又能够对图片进行有损压缩的图片压缩方法。为了保护原创性设计作品的知识产权,作者希望对设计作品进行加密处理,以确保自己的设计作品在网络上流通的过程中被别人利用和修改。而由于图片的文件格式都是固定的,如果作者使用普通的压缩软件对作品进行压缩和加密,势必会被一些针对于压缩软件的分析器轻易破解,对作者造成不可弥补的损失。

发明内容
本发明针对现有技术的不足,提出了一种在压缩时既保留带ARGB通道数据的图片文件的alpha通道数据,又能增加图片文件的压缩率,还可以对图片文件进行加密的保留alpha通道数据的图片压缩方法。本发明的技术方案如下一种图片压缩方法,其步骤包括I)读取图片数据,对所述图片数据进行逐像素的扫描,将每个像素的alpha通道数据分离出来;2)所有像素的alpha通道数据合并成alpha通道文件;3)所有像素的RGB通道数据进行有损压缩,生成RGB压缩文件;4)所述alpha通道文件和所述RGB压缩文件合并到一个中间文件中;将所述中间文件进行无损压缩,生成压缩数据。所述步骤I)中的alpha通道数据通过位操作分离。所述步骤4)中的中间文件为二进制文件。 所述中间文件包括图片宽度、像素总数、alpha通道文件、RGB压缩文件。所述压缩数据的解压缩步骤包括a)对所述压缩数据进行解压缩得到所述中间文件;b)在所述中间文件中读取所述图片宽度和所述像素总数,图片高度=像素总数/图片宽度;c)按照所述图片高度和所述图片宽度在存储器中创建一个空白图片;d)读取所述alpha通道文件和所述RGB压缩文件,对所述RGB压缩文件解压缩,生成RGB通道文件;e)将所述alpha通道文件中的alpha通道数据和所述RGB通道文件中的RGB通道数据合并为像素值,将所述像素值填入所述空白图片中,还原成所述图片数据。所述有损压缩方法采用哈夫曼编码。所述无损压缩方法采用deflate算法。压缩步骤在服务器中进行,生成所述压缩数据,将所述压缩数据通过网络传入客户端中;所述解压缩步骤在所述客户端中进行,对所述压缩数据解压缩后得到图片数据。所述图片数据在客户端生成对用户显示的界面。本发明的技术效果如下本发明的一种保留alpha通道的图片压缩方法,其步骤包括1)读取图片数据,对图片数据进行逐像素的扫描,将每个像素的alpha通道数据分离出来;2)所有像素的alpha通道数据合并成alpha通道文件;3)所有像素的RGB通道数据进行有损压缩,生成RGB压缩文件;4)alpha通道文件和RGB压缩文件合并到一个中间文件中;将中间文件进行无损压缩,生成压缩数据。经过上述两次压缩之后,压缩数据中保存了经过无损压缩、完整的alpha通道文件和经过有损压缩、压缩率更低的RGB压缩文件。从而既保留带ARGB通道数据的图片文件的alpha通道数据,又能增加图片文件的压缩率,除此之外,这种压缩方法还可以用于对图片文件进行加密。由于在第一次压缩后将alpha通道数据和RGB压缩文件合并到一个中间文件中,除了可以简化程序开发的复杂性,还可避免两个文件在加载中因先后顺序颠倒而导致的加载失败的风险。进一步,如果将alpha通道数据和RGB压缩文件分成两个文件保存,那么这两个独立文件会包含各自的文件头信息,增加文件大小。而将alpha通道数据和RGB压缩文件存成一个二进制文件时是不带文件头信息的,存储的就是像素信息,而一个文件的体积和压缩比更高。由于二进制文件没有文件头,因此将中间文件以二进制的格式存储,使经过无损压缩后生成的压缩数据容量更小。


图I是带有ARGB通道的图片文件结构示意2是本发明的对图片文件进行二次压缩的流程示意图
具体实施例方式下面结合附图对本发明进行说明。在以下描述中,描述一些具体细节为计算机领域的技术人员提供对本发明的整体理解。在实施例中,以示意图或者框图的形式表明实现具体功能的元件,以便突出技术重点,而不会在不必要的细节方面模糊本发明。比如,由于本领域普通技术人员的理解范围中涵盖了关于网络通信、电磁信号指令技术、用户接口或输入/输出技术等本领域中公开的、常识性的细节,因而在实施例中最大程度上省略了上述技术细节,而不认为这些细节是获 得本发明完整技术方案所必须的特征。以网页游戏中对图片文件的压缩和解压缩的过程为例,通常一个网页游戏的系统包括游戏服务器I和客户端2,图片文件的压缩过程在游戏服务器I中进行,压缩后生成压缩文件,将压缩文件通过网络传入客户端2中;解压缩的过程在客户端2中进行,对压缩文件进行解压缩后得到解压文件;客户端2使用解压文件生成游戏界面,对用户进行显示。如图2所示,本发明在游戏服务器I中对图片文件进行拆分,将alpha通道数据从ARGB通道数据中分离出来,并对余下的RGB通道数据进行有损压缩,生成RGB压缩文件。之后将alpha通道数据和RGB压缩文件合并到一个中间文件中,再对这个中间文件进行无损压缩,生成最终的压缩文件。其具体步骤如下I)首先从游戏服务器I的游戏数据库中读取资源数据,然后只保留图片文件,过滤掉其他文件,如游戏中角色场景Al等配置信息;2)对图片数据进行逐个像素的扫描,通过位操作将每个像素的alpha通道数据从ARGB通道数据中分离出来,所有像素的alpha通道数据合并成alpha通道文件;3)将剩下所有像素的RGB通道数据合并为RGB通道文件,并采用哈夫曼编码对这一 RGB通道文件进行有损压缩,生成RGB压缩文件,RGB压缩文件的图片质量可以根据需求进行调整;4)将步骤2)中分离出的alpha通道文件和步骤3)中的RGB压缩文件以二进制的格式合并到一个中间文件中;这个中间文件的内容包括图片宽度,为4个字节;像素总数,为4个字节;alpha通道文件,RGB压缩文件;5)将合并后的中间文件再次采用deflate算法进行无损压缩,生成图片文件的压缩文件。配合于游戏服务器I中的二次压缩,本发明在客户端2中对压缩文件进行解压缩a)对压缩数据使用deflate算法解压缩得到由二进制数据组成的中间文件;b)在中间文件中读取4个字节的图片宽度和4个字节的像素总数,其中图片高度=像素总数/图片宽度;c)按照图片高度和图片宽度在客户端2的缓存中创建一个空白图片;
d)根据像素总数计算出由所有像素的alpha通道数据组成的alpha通道文件的长度,再读取相应长度的数据;剩余的数据为经过有损压缩的RGB压缩文件,使用哈夫曼编码解码该RGB压缩文件,生成RGB通道文件;e)将alpha通道文件中的alpha通道数据和RGB通道文件中对应的RGB通道数据合并为像素值,将每个像素值按照先后顺序填入步骤c)已经创建好的空白图片中,生成解压文件进行使用。应当指出,以上所述具体实施方式
可以使本领域的技术人员更全面地理解本发明创造,但不以任何方式限制本发明创造。因此,尽管本说明书参照附图和实施例对本发明创造已进行了详细的说明,但是,本领域技术人员应当理解,仍然可以对本发明创造进行修改 或者等同替换,总之,一切不脱离本发明创造的精神和范围的技术方案及其改进,其均应涵盖在本发明创造专利的保护范围当中。
权利要求
1.一种图片压缩方法,其步骤包括 1)读取图片数据,对所述图片数据进行逐像素的扫描,将每个像素的alpha通道数据分离出来; 2)所有像素的alpha通道数据合并成alpha通道文件; 3)所有像素的RGB通道数据进行有损压缩,生成RGB压缩文件; 4)所述alpha通道文件和所述RGB压缩文件合并到一个中间文件中;将所述中间文件进行无损压缩,生成压缩数据。
2.如权利要求I所述的一种图片压缩方法,其特征在于所述步骤I)中的alpha通道数据通过位操作分离。
3.如权利要求I所述的一种图片压缩方法,其特征在于所述步骤4)中的所述中间文件为~■进制文件。
4.如权利要求I或2或3所述的一种图片压缩方法,其特征在于所述中间文件包括图片宽度、像素总数、alpha通道文件、RGB压缩文件。
5.如权利要求4所述的一种图片压缩方法,其特征在于所述压缩数据的解压缩步骤包括 a)对所述压缩数据进行解压缩得到所述中间文件; b)在所述中间文件中读取所述图片宽度和所述像素总数,图片高度=像素总数/图片宽度; c)按照所述图片高度和所述图片宽度在存储器中创建一个空白图片; d)读取所述alpha通道文件和所述RGB压缩文件,对所述RGB压缩文件解压缩,生成RGB通道文件; e)将所述alpha通道文件中的alpha通道数据和所述RGB通道文件中的RGB通道数据合并为像素值,将所述像素值填入所述空白图片中,还原成所述图片数据。
6.如权利要求I或2或3或5所述的一种图片压缩方法,其特征在于所述有损压缩方法采用哈夫曼编码。
7.如权利要求I或2或3或5所述的一种图片压缩方法,其特征在于所述无损压缩方法采用deflate算法。
8.如权利要求5所述的一种图片压缩方法,其特征在于压缩步骤在服务器中进行,生成所述压缩数据,将所述压缩数据通过网络传入客户端中;所述解压缩步骤在所述客户端中进行,对所述压缩数据解压缩后得到图片数据。
9.如权利要求8所述的一种图片压缩方法,其特征在于所述图片数据在客户端生成对用户显示的界面。
全文摘要
本发明涉及一种保留alpha通道的图片压缩方法,其步骤包括1)读取图片数据,对图片数据进行逐像素的扫描,将每个像素的alpha通道数据分离出来;2)所有像素的alpha通道数据合并成alpha通道文件;3)所有像素的RGB通道数据进行有损压缩,生成RGB压缩文件;4)alpha通道文件和RGB压缩文件合并到一个中间文件中;将中间文件进行无损压缩,生成压缩数据。经过上述两次压缩之后,压缩数据中保存了经过无损压缩、完整的alpha通道文件和经过有损压缩、压缩率更低的RGB压缩文件。从而既保留带ARGB通道数据的图片文件的alpha通道数据,又能增加图片文件的压缩率,除此之外,这种压缩方法还可以用于对图片文件进行加密。
文档编号H04N7/26GK102821279SQ20121027059
公开日2012年12月12日 申请日期2012年7月31日 优先权日2012年7月31日
发明者朱希顺, 石波涛, 张春平 申请人:北京天神互动科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1