png的格式及像素存储分析

从图片的数据块存储方式来看png分两种

1.索引色模式存储。png8的索引色透明就采取该种方式。该种方式是将颜色存在png的可选模块调色板中,调色板的色彩存储格式为RGB(各1byte)。而图片的数据块里的像素直接存储调色板里的索引值,根据索引寻找对应的颜色及透明色。透明色的指定由PLTE后的tRNS图像透明数据块指定。布尔透明和alpha透明的区别是alpha透明为透明色附加了8位(1byte)的透明级别。tRNS图像透明数据块的长度与调色板对应如下。

PLTE块格式为:?

循环?

RED:    1byte?

GREEN:1byte?

BLUE:  1byte?

END

tRNS块布尔透明格式为:?

循环?

if(对应调色盘颜色非透明)?

0xFF:  1byte?

else?

0x00:  1byte?

END?

tRNS块alpha透明格式为:?

循环?

if(对应调色盘颜色非透明)?

0xFF:  1byte?

else?

0x**:  1byte?   (具体的透明级别共256级)

END?

tRNS块的循环长度为调色盘的颜色数,相当于调色板颜色表的一个对应表,标识该颜色是否透明,0xFF(255)不透明,0x00(0)全透明。

2.真彩色存储(非专业术语)。该类存储不存在调色板(或者有调色板供非真彩色显示程序用它来量化图像数据,从而显示该图像。),在数据块的像素里直接存储颜色信息。这里就有常说的RGB_888(24bit)、RGB565(16bit)、RGBA_8888(32bit)、RGBA_4444(16bit)、RGBA5551(16bit)等等。png24及png32都是该类存储。

从图片的色彩位数来看常用以下几种

1.png8。这个8理解为位深,但这个位深可减少。存储方式可为索引色存储。索引色位深可为1,2,4,8。随着位深的减少可支持的颜色也减少。可支持8位色彩共256(2的8次方)种颜色。

1.png16。这个8理解为位深,存储方式可为RGB565(16bit)、RGBA_8888(32bit)、RGBA_4444(16bit)、RGBA5551(16bit)。但这个位深可减少。索引色位深可为1,2,4,8。随着位深的减少可支持的颜色也减少。可支持8位色彩共256(2的8次方)种颜色。

2.png24。24也理解为位深,存储方式为RGB_888。可支持24位色彩共1600多万(2的24次方)种颜色。

3.png32。32也理解为位深,存储方式为RGB_888。实际上为png24+8位的透明通道。同样支持24位色彩共1600多万(2的24次方)种颜色。

但是位深是不定的,以上仅仅列举常用的几种,还可以是无透明通道的3*2^(常有8、16、32)或有透明通道的4*2^(常有8、16、32)。

那么我们使用libpng如何判断png的格式。

/*获取位深,颜色类型*/
channels = png_get_channels(png_ptr, info_ptr); /*获取通道数*/
bit_depth = png_get_bit_depth(png_ptr, info_ptr); /* 获取位深 */
color_type = png_get_color_type(png_ptr, info_ptr); /*颜色类型*/

根据这些我们可以由以下表格进行判断

Bit depth 1 byte 图像深度:   索引彩色图像:1,2,4或8   灰度图像:1,2,4,8或16   真彩色图像:24或32或48
ColorType 1 byte 颜色类型:  0:灰度图像   2:真彩色图像   3:索引彩色图像   4:带α通道数据的灰度图像   6:带α通道数据的真彩色图像

参考:

http://baike.baidu.com/link?url=FckD48sfXstBMBnODg40OJvyMGNsiEy1-4SbwE_TSN9WK1WFaIkyjVe5d7YeUlbwKaAe_4swGsSg21PFKzAoba

http://www.cnblogs.com/PeunZhang/archive/2013/05/30/3050394.html

http://blog.163.com/[email protected]/blog/static/16947232820124411174877/

时间: 2024-10-23 21:19:41

png的格式及像素存储分析的相关文章

大数据影响安防 存储分析问题迎刃而解

大数据无疑是今年的热门关键词之一,网络飞速发展,信息时代扑面而来,大量数据涌现.这些数据的价值,若能应用便是一笔财富,若不能挖掘其价值 进行应用,则只是数据,甚至可能是一种负担.安防数据也正在以几何级的速度快速增长,越来越多的安防用户对大数据提出了更高的要求,希望能够通过海量数据 的分析,达到预测预警的作用. 大数据对安防的真正意味是什么?对安防监控有何帮助? 美国利用大数据的做了什么? 在谈大数据对安防监控的影响之前,我们先来看下在大数据应用方面较为成熟的美国利用大数据做了些什么? 1.美国国

浓缩的才是精华:浅析GIF格式图片的存储和压缩

GIF(Graphics Interchange Format)原义是"图像互换格式",是CompuServe公司在1987年开发出的图像文件格式,可以说是互联网界的老古董了. GIF格式可以存储多幅彩色图像,如果将这些图像连续播放出来,就能够组成最简单的动画.所以常被用来存储"动态图片",通常时间短,体积小,内容简单,成像相对清晰,适于在早起的慢速互联网上传播. 本来,随着网络带宽的拓展和视频技术的进步,这种图像已经渐渐失去了市场.可是,近年来流行的表情包文化,让

黄聪:浓缩的才是精华:浅析GIF格式图片的存储和压缩(转)

http://www.cnblogs.com/qcloud1001/p/6647080.html 成文迪, 在Web前端摸爬滚打的码农一枚,对技术充满热情的菜鸟,致力为手Q的建设添砖加瓦. GIF格式的历史 GIF(Graphics Interchange Format)原义是“图像互换格式”,是CompuServe公司在1987年开发出的图像文件格式,可以说是互联网界的老古董了. GIF格式可以存储多幅彩色图像,如果将这些图像连续播放出来,就能够组成最简单的动画.所以常被用来存储“动态图片”,

C语言共用体存储分析

float类型的数据在内存中是如上存储的,float类型的存储方式如下(摘自博客 http://blog.csdn.net/yezhubenyue/article/details/7436624): 取原文中的部分总结如下: 浮点型变量在计算机内存中占用4字节(Byte),即32-bit.遵循IEEE-754格式标准. 一个浮点数由2部分组成:底数M和指数E. 底数部分 使用2进制数来表示此浮点数的实际值. 指数部分 占用8-bit的二进制数,可表示数值范围为0-255.但是指数应可正可负,所以

[7] MQTT,mosquitto,Eclipse Paho---MQTT消息格式之CONNACK消息分析

在上节中([6] MQTT,mosquitto,Eclipse Paho---MQTT消息格式之CONNECT消息格式分析)我们分析了CONNECT消息格式,我们知道CONNECT消息是客户端发送出去的,作为对客户端的连接请求,服务器端同样会有一个消息的返回,这个消息就是CONNACK的消息.我们在发出去CONNECT消息后,如果WireShark抓包工具依然开启的话,将会抓到类似于下面的TCP消息,其16进制为:20 02 00 00,那么其代表什么意思呢? 首先我们来看CONNACK的消息格

存储分析--- 转载

2013年SSD行业发展总结[转载] (2014-06-09 23:33:07) 转载▼ 标签: flash ssd 存储 分类: SSD 1.概述 2013年是Flash存储领域非常不平凡的一年,Flash盘阵厂商Violin Memory上市之后就股票大跌,CEO被迫辞退.混合存储厂商Nimble Storage终于在年末成功上市.Cisco在自己的老本行之外于去年下半年收购全Flash盘阵厂商Whiptail,开始入足存储领域.FusionIO在去年一直收益不佳,并且引发高层动荡,创始人兼

视频格式与编码问题分析

一.什么是视频格式? 视频格式是一种封装格式,就是把编码后的比特流进行封装,不同的视频格式封装方法不同.目前视频都是由音频流+视频流组成.格式只是封装容器,例如rmvb,mkv,MP4,mpg,ts等等.常见的视频流有MPEG2,MPEG4,H264,VC1等等,MPEG2是比较老式的视频编码,压缩率很低.MPEG4是比较新的编码,常见于DVD影片等等,压缩率一般,最新的MPEG4视频编码是Xvid,还有比较老的DivX.H264(X264是H264的一种)是新生的视频编码,常见于高清视频中,压

oracle中简单查询语句的格式及执行顺序分析

一条简单的查询sql格式如下: SELECT ... FROM .... [WHERE ...] --过滤单行 [GROUP BY ...   [HAVING ...]]--GROUP BY对前面where条件过滤后的结果进行分组,HAVING过滤行组 [ORDER BY ...]--对结果进行排序 eg: 现在有个exchangetime表,表结构如下 名称                                            是否为空? 类型 ----------------

saiku 元数据存储分析

一.介绍 使用saiku的人一定对他的元数据存储都特别感兴趣,特别是有分布式管理需求的项目,更是迫切需要了解.其实它是使用Apache的开源项目Jackrabbit管理文件的! 二.代码跟踪 我也是使用了一段时间,希望深入了解它的元数据存储,下面是代码跟踪: 2.1 ajax 首先还是从ajax入手:ajax请求:/saiku/rest/saiku/admin/datasources?_=1466478165922 对应的脚本:org.saiku.web.rest.resources.Admin