一种处理PNG图片格式中alpha通道数据的方法
【专利摘要】本发明公开了一种处理PNG图片格式中alpha通道数据的方法。本发明包括如下步骤:(1)、解析32位PNG图片数据的头部数据,得到PNG图片的高度h和宽度w;(2)、建立alpha通道数据集合DSA;(3)、遍历每个像素点数据Pi,得到集合DSA={A1,A2,…,An?1,An};(4)、分析集合DSA中的alpha通道数据;根据分析结果对alpha通道数据进行处理。本发明能够有效的节省了存储空间、网络传输流量等资源。
【专利说明】
一种处理PNG图片格式中a Ipha通道数据的方法
技术领域
[0001]本发明属于数据压缩、计算机图形图像处理领域,涉及一种处理PNG图片格式中alpha通道数据的方法。
【背景技术】
[0002]PNG,一种图像文件存储格式,其特点是可以支持透明效果。PNG可以为原图像定义256个透明层次,使得彩色图像的边缘能与任何背景平滑地融合,从而彻底地消除锯齿边缘。这种功能是很多图片格式所没有的,比如普通的BMP图片格式、JPEG图片格式,通常情况下都不支持透明效果。
[0003]在实际使用PNG图片格式数据的时候,常常要对数据进行存储、网络传输等处理,这就涉及到数据的压缩。多数情况下,存储的空间越小越好,网络传输的数据量越小越好。
[0004]最常用的PNG图片格式数据是32位的PNG数据格式,其中含有24位的色彩通道数据和8位的alpha通道数据,alpha通道数据就是透明度数据。对着32位PNG数据的压缩处理,目前存在的方法都没有对8位alpha通道数据进行特殊处理,基本都是用通用压缩引擎压缩一下。
【发明内容】
[0005]本发明的目的是针对现有技术的不足,提供一种处理PNG图片格式中alpha通道数据的方法。
[0006]本发明解决其技术问题所采用的技术方案包括如下步骤:
[0007]步骤(I)、解析32位PNG图片数据的头部数据,得到PNG图片的高度h和宽度W,该PNG图片数据含有η个像素点数据,n = hXw;每个像素点数据都有32位,其中色彩通道数据24位,alpha通道数据8位;此时alpha通道数据需要的存储空间sp = 8 X η,以bit为单位;
[0008]步骤(2)、建立alpha通道数据集合DSA;
[0009]步骤(3)、遍历每个像素点数据P1,l<i<n,其中像素点数据P^alpha通道数据为Ai,将Ai放入集合DSA ;最终得到集合DSA= (A1,A2,…,AnArJ
[0010]步骤(4)、分析集合DSA中的alpha通道数据;如果满足条件:Ai = A2 =…=An-1 = An=KZ,也就是说集合DSA中的每个数据都相同,跳转到步骤(5);否则,跳转到步骤(6);
[0011]步骤(5)、不需要保存每个像素点数据的alpha通道数据的值,使用O位alpha通道数据表达,因为所有像素点数据的alpha通道数据值都是一个8位的常量值KZ,保存一个KZ值即可;此时alpha通道数据需要的存储空间sp = 8,以bit为单位,alpha通道数据处理完毕;
[0012]步骤(6)、如果满足条件丄1=八\2-"=八^ = 1(1且八丫1=八丫2-"=八丫1 = 1(2,1彡叉;[彡11,1^^1<11,1(1和1(2为8位常量,1(1#1(2,也就是说所有像素点数据的&1?11&通道数据只有两个值,Kl或者K2,跳转至步骤(7);否则,跳转至步骤(8);
[0013]步骤(7)、使用I位alpha通道数据表达,为每个像素点数据保存I位alpha通道数据的值,分别为O和I,其中O代表Kl值,I代表K2值;此时alpha通道数据需要的存储空间SP = IX η,以bit为单位,alpha通道数据处理完毕;
[0014]步骤(8)、不对alpha通道数据做特殊处理,为每个像素点数据保存8位alpha通道数据的值;此时a I pha通道数据需要的存储空间sp = 8Xn,以bit为单位;al pha通道数据处理完毕。
[0015]本发明有益效果如下:
[0016]本发明主要特点是对最常用的32位PNG图片数据中的8位alpha通道数据进行了分门别类的特殊处理。其中O位alpha通道,不需要为每个像素点保存alpha通道值,只需一个8位常量;I位alpha通道,只需要为每个像素点保存I位alpha通道的值。在实际业务中,上述两种情况的PNG图片是非常多的,有效的节省了存储空间、网络传输流量等资源。
【附图说明】
[0017]图1为本发明的流程图;
[0018]图2为O位alpha通道示意图,PNG图片的每个像素点的alpha全部为255;
[0019]图3为O位alpha通道示意图,PNG图片的每个像素点的alpha全部为128;
[0020]图4为I位alpha通道图示意图,PNG图片的一部分像素点的alpha值为O,另外一部分像素点的alpha值为255;
[0021 ] 图5为8位alpha通道图;
【具体实施方式】
[0022]下面结合附图对本发明作进一步说明。
[0023]如图1所述,一种处理PNG图片格式中alpha通道数据的方法,具体包括如下步骤:
[0024]步骤(I)、解析32位PNG数据的头部数据,得到图片的高度h和宽度w,该PNG数据含有η个像素点数据,n = hXw;每个像素点数据都有32位,其中色彩通道数据24位,alpha通道数据8位;此时alpha通道数据需要的存储空间为sp = 8 X η,以bit为单位
[0025]步骤(2)、建立数据集合DSA;
[0026]步骤(3)、遍历每个像素点数据Pi,Ki彡n,其中Pi的alpha通道数据为Ai,将Ai放入集合DSA;最终得到集合DSA=M^Av ,AnArJ
[0027I 步骤(4)、分析集合DSA的数据;如果满足条件:Ai = A2 =…=An—i = An = KZ,也就是说集合DSA中的每个数据都相同,转步骤(5);否则,转步骤(6);
[0028]步骤(5)、如图2和图3所示,这种情况可以使用O位alpha通道数据表达,不需要为每个像素点保存alpha通道的值,因为所有像素点的alpha值都是一个8位的常量值KZ,保存一个KZ值即可;此时alpha通道数据需要的存储空间仅为sp = 8,以bit为单位;转至步骤
(9);
[0029]步骤(6)、如果满足条件:厶\1=厶\2二"=厶^ = 1(1且厶丫1=厶丫2二"=厶丫1 = 1(2,1^^;!^n,l彡yi彡η,Κ1和K2为8位常量,K14K2,也就是说所有像素点的alpha通道只有两个值,Kl或者K2,转步骤(7);否则,转步骤(8);
[0030]步骤(7)、如图4所示,这种情况可以使用I位alpha通道数据表达,只需要为每个像素点保存I位al pha通道的值,分别为O和I,其中O代表KI值,I代表K2值;此时a I pha通道数据需要的存储空间为sp = l Xn,以bit为单位;转至步骤(9);
[0031]步骤(8)、不属于上述两种情况,不对alpha数据做特殊处理,为每个像素点保存8位alpha通道的值;此时alpha通道数据需要的存储空间为sp = 8Xn,以bit为单位;转至步骤(9);如图5所示。
[0032]步骤(9)、alpha通道数据处理完毕。
【主权项】
1.一种处理PNG图片格式中alpha通道数据的方法,其特征在于包括如下步骤: 步骤(I)、解析32位PNG图片数据的头部数据,得到PNG图片的高度h和宽度w,该PNG图片数据含有η个像素点数据,n = hXw;每个像素点数据都有32位,其中色彩通道数据24位,alpha通道数据8位;此时alpha通道数据需要的存储空间sp = 8 X η,以bit为单位; 步骤(2)、建立alpha通道数据集合DSA; 步骤(3)、遍历每个像素点数据P1, 彡n,其中像素点数据Pj^alpha通道数据为A1,将Ai放入集合DSA;最终得到集合DSA= (A1,A2,…,An-^ArJ步骤(4)、分析集合DSA中的alpha通道数据;如果满足条件= A1 = A2 =…=A^1 = An = KZ,也就是说集合DSA中的每个数据都相同,跳转到步骤(5);否则,跳转到步骤(6); 步骤(5)、不需要保存每个像素点数据的alpha通道数据的值,使用O位alpha通道数据表达,因为所有像素点数据的alpha通道数据值都是一个8位的常量值KZ,保存一个KZ值即可;此时alpha通道数据需要的存储空间sp = 8,以bit为单位,alpha通道数据处理完毕;步骤(6)、如果满足条件:Axl = AX2 = …= Axi = Kl且Ayl = Ay2 = …= Ayi = K2,Kxi<n,l彡yi彡η,K1和K2为8位常量,Kl #K2,也就是说所有像素点数据的alpha通道数据只有两个值,Kl或者K2,跳转至步骤(7);否则,跳转至步骤(8); 步骤(7)、使用I位alpha通道数据表达,为每个像素点数据保存I位alpha通道数据的值,分别为O和I,其中O代表KI值,I代表K2值;此时a Ipha通道数据需要的存储空间sp = I Xη,以bit为单位,alpha通道数据处理完毕; 步骤(8)、不对alpha通道数据做特殊处理,为每个像素点数据保存8位alpha通道数据的值;此时alpha通道数据需要的存储空间sp = 8Xn,以bit为单位;alpha通道数据处理完毕。
【文档编号】G06T9/00GK105938625SQ201610159057
【公开日】2016年9月14日
【申请日】2016年3月18日
【发明人】刘鹏
【申请人】浙江万朋教育科技股份有限公司