- 浏览: 381336 次
- 来自: www.pgp.org.cn
文章分类
最新评论
-
I_am_a_System:
尼玛的。严重鄙视!!!!!!!!!!!!!!!!!!!!!!! ...
java处理PNG图像(转载WikiMedia) -
iamaj2eeprogrammer:
你好,有问题要请教你。
发现GDCA USBKey(电子钥匙)的CSP数字签名实现存在缺陷 -
yingjinsheng:
标题和内容严重不符,麻烦你拷贝人家的东西,把标题也拷贝过来好 ...
java处理PNG图像(转载WikiMedia) -
510372845:
我还是不大明白,请问一下:我用的是tomcat,怎么样Impo ...
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No trusted certificate found -
chris_zcl:
你在做日记吗?不能写的详细点啊
PHP与CAS做SSO
http://catcode.com/pngencoder/
http://prdownloads.sourceforge.net/javapng/javapng-2.0-rc4-src.jar?download
PNG格式
PNG是20世纪90年代中期开始开发的图像文件存储格式,其目的是企图替代GIF和TIFF文件格式,同时增加一些GIF文件格式所不具备的特性。流式网络图形格式(Portable Network Graphic Format,PNG)名称来源于非官方的“PNG's Not GIF”,是一种位图文件(bitmap file)存储格式,读成“ping”。PNG用来存储灰度图像时,灰度图像的深度可多到16位,存储彩色图像时,彩色图像的深度可多到48位,并且还可存储多到16位的α通道数据。PNG使用从LZ77派生的无损数据压缩算法。
PNG文件格式保留GIF文件格式的下列特性:
使用彩色查找表或者叫做调色板可支持256种颜色的彩色图像。
流式读/写性能(streamability):图像文件格式允许连续读出和写入图像数据,这个特性很适合于在通信过程中生成和显示图像。
逐次逼近显示(progressive display):这种特性可使在通信链路上传输图像文件的同时就在终端上显示图像,把整个轮廓显示出来之后逐步显示图像的细节,也就是先用低分辨率显示图像,然后逐步提高它的分辨率。
透明性(transparency):这个性能可使图像中某些部分不显示出来,用来创建一些有特色的图像。
辅助信息(ancillary information):这个特性可用来在图像文件中存储一些文本注释信息。
独立于计算机软硬件环境。
使用无损压缩。
PNG文件格式中要增加下列GIF文件格式所没有的特性:
每个像素为48位的真彩色图像。
每个像素为16位的灰度图像。
可为灰度图和真彩色图添加α通道。
添加图像的γ信息。
使用循环冗余码(cyclic redundancy code,CRC)检测损害的文件。
加快图像显示的逐次逼近显示方式。
标准的读/写工具包。
可在一个文件中存储多幅图像。
文件结构
PNG图像格式文件(或者称为数据流)由一个8字节的PNG文件署名(PNG file signature)域和按照特定结构组织的3个以上的数据块(chunk)组成。
PNG定义了两种类型的数据块,一种是称为关键数据块(critical chunk),这是标准的数据块,另一种叫做辅助数据块(ancillary chunks),这是可选的数据块。关键数据块定义了4个标准数据块,每个PNG文件都必须包含它们,PNG读写软件也都必须要支持这些数据块。虽然PNG文件规范没有要求PNG编译码器对可选数据块进行编码和译码,但规范提倡支持可选数据块。
(1) PNG文件署名域
8字节的PNG文件署名域用来识别该文件是不是PNG文件。该域的值是:
十进制数 | 137 | 80 | 78 | 71 | 13 | 10 | 26 | 10 |
十六进制数 | 89 | 50 | 4e | 47 | 0d | 0a | 1a | 0a |
(2) 数据块的结构
每个数据块都由表6-07所示的的4个域组成。
表6-07 PNG文件数据块的结构
名称 |
字节数 |
说明 |
Length(长度) | 4字节 |
指定数据块中数据域的长度,其长度不超过 (231-1)字节 |
Chunk Type Code(数据块类型码) | 4字节 | 数据块类型码由ASCII字母(A-Z和a-z)组成 |
Chunk Data(数据块数据) | 可变长度 | 存储按照Chunk Type Code指定的数据 |
CRC(循环冗余检测) | 4字节 | 存储用来检测是否有错误的循环冗余码 |
在表6-07中,CRC(cyclic redundancy check)域中的值是对Chunk Type Code域和Chunk Data域中的数据进行计算得到的。CRC具体算法定义在ISO 3309和ITU-T V.42中,其值按下面的CRC码生成多项式进行计算:
x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1
数据块结构
1. 关键数据块
关键数据块中的4个标准数据块是:
(1) 文件头数据块IHDR(header chunk):它包含有PNG文件中存储的图像数据的基本信息,并要作为第一个数据块出现在PNG数据流中,而且一个PNG数据流中只能有一个文件头数据块。
文件头数据块由13字节组成,它的格式如表6-08所示。
表6-08 PNG文件头键数据块的结构
域的名称 |
字节数 |
说明 |
Width | 4 bytes | 图像宽度,以像素为单位 |
Height | 4 bytes | 图像高度,以像素为单位 |
Bit depth | 1 byte |
图像深度: 索引彩色图像:1,2,4或8 灰度图像:1,2,4,8或16 真彩色图像:8或16 |
ColorType | 1 byte |
颜色类型: 0:灰度图像, 1,2,4,8或16 2:真彩色图像,8或16 3:索引彩色图像,1,2,4或8
4:带α通道数据的灰度图像,8或16 |
Compression method | 1 byte | 压缩方法(LZ77派生算法) |
Filter method | 1 byte | 滤波器方法 |
Interlace method | 1 byte |
隔行扫描方法:
0:非隔行扫描
1: Adam7(由Adam M. Costello开发的7 |
(2) 调色板数据块PLTE(palette chunk):它包含有与索引彩色图像((indexed-color image))相关的彩色变换数据,它仅与索引彩色图像有关,而且要放在图像数据块(image data chunk)之前。真彩色的PNG数据流也可以有调色板数据块,目的是便于非真彩色显示程序用它来量化图像数据,从而显示该图像。调色板数据块结构如表6-09所示。
表6-09 调色板数据块结构
域的名称 |
字节数 |
说明 |
Red | 1 byte | 0 = 黑,255 = 红 |
Green |
">
0 = 黑,255 = 绿 |
|
Blue | 1 byte | 0 = 黑,255 = 蓝 |
调色板实际是一个彩色索引查找表,它的表项数目可以是1~256中的一个数,每个表项有3字节,因此调色板数据块所包含的最大字节数为768。
(3) 图像数据块IDAT(image data chunk):它存储实际的数据,在数据流中可包含多个连续顺序的图像数据块。
(4) 图像结束数据IEND(image trailer chunk):它用来标记PNG文件或者数据流已经结束,并且必须要放在文件的尾部。
除了表示数据块开始的IHDR必须放在最前面, 表示PNG文件结束的IEND数据块放在最后面之外,其他数据块的存放顺序没有限制。
2. 辅助数据块
PNG文件格式规范制定的10个辅助数据块是:
(1) 背景颜色数据块bKGD(background color)。
(2) 基色和白色度数据块cHRM(primary chromaticities and white point)。所谓白色度是指当R=G=B=最大值时在显示器上产生的白色度。
(3) 图像γ数据块gAMA(image gamma)。
(4) 图像直方图数据块hIST(image histogram)。
(5) 物理像素尺寸数据块pHYs(physical pixel dimensions)。
(6) 样本有效位数据块sBIT(significant bits)。
(7) 文本信息数据块tEXt(textual data)。
(8) 图像最后修改时间数据块tIME (image last-modification time)。
(9) 图像透明数据块tRNS (transparency)。
(10) 压缩文本数据块zTXt (compressed textual data)。
3. 数据块摘要
关键数据块、辅助数据块和专用公共数据块(special-purpose public chunks)综合在表6-10中。
表6-10 PNG文件格式中的数据块
数据块符号 |
数据块名称 |
多数据块 |
可选否 |
位置限制 |
IHDR | 文件头数据块 |
否 |
否 |
第一块 |
cHRM | 基色和白色点数据块 |
否 |
是 |
在PLTE和IDAT之前 |
gAMA | 图像γ数据块 |
否 |
是 |
在PLTE和IDAT之前 |
sBIT | 样本有效位数据块 |
否 |
是 |
在PLTE和IDAT之前 |
PLTE | 调色板数据块 |
否 |
是 |
在IDAT之前 |
bKGD | 背景颜色数据块 |
否 |
是 |
在PLTE之后IDAT之前 |
hIST | 图像直方图数据块 |
否 |
是 |
在PLTE之后IDAT之前 |
tRNS | 图像透明数据块 |
否 |
是 |
在PLTE之后IDAT之前 |
oFFs | (专用公共数据块) |
否 |
是 |
在IDAT之前 |
pHYs | 物理像素尺寸数据块 |
否 |
是 |
在IDAT之前 |
sCAL | (专用公共数据块) |
否 |
是 |
在IDAT之前 |
IDAT | 图像数据块 |
是 |
否 |
与其他IDAT连续 |
tIME | 图像最后修改时间数据块 |
否 |
是 |
无限制 |
tEXt | 文本信息数据块 |
是 |
是 |
无限制 |
zTXt | 压缩文本数据块 |
是 |
是 |
无限制 |
fRAc | (专用公共数据块) |
是 |
是 |
无限制 |
gIFg | (专用公共数据块) |
是 |
是 |
无限制 |
gIFt | (专用公共数据块) |
是 |
是 |
无限制 |
gIFx | (专用公共数据块) |
是 |
是 |
无限制 |
IEND | 图像结束数据 |
否 |
否 |
最后一个数据块 |
tEXt和zTXt数据块中的标准关键字:
Title |
图像名称或者标题 |
Author |
图像作者名 |
Description |
图像说明 |
Copyright |
版权声明 |
CreationTime |
原图创作时间 |
Software |
创作图像使用的软件 |
Disclaimer |
弃权 |
Warning |
图像内容警告 |
Source |
创作图像使用的设备 |
Comment |
各种注释 |
评论
发表评论
-
java处理PNG图像(转载WikiMedia)
2006-06-06 22:17 3295http://catcode.com/pngenco ... -
Java处理Gif图片
2006-06-06 22:32 1439http://www.gurge.com/amd/old/ja ... -
PNG头文件格式分析
2006-06-08 11:39 160400000000h: 89 50 4E 47 0D ... -
Java处理Gif图片
2006-06-06 22:32 4028http://www.gurge.com/amd/old/ja ... -
PNG头文件格式分析
2006-06-08 11:39 216900000000h: 89 50 4E 47 0D ...
相关推荐
"wikimedia-spicerack-0.0.49.tar.gz" 是一个针对Python的库,其名称暗示了它可能与维基媒体项目相关,因为“wikimedia”通常与维基百科、维基媒体基金会等组织的开源项目联系在一起。 **wikimedia-spicerack** 库...
本项目“javaswing简单源码-ImageMapAssistant”是一个基于Java Swing的简单应用程序,主要用于帮助用户为Wikimedia引擎创建和扩展“ImageMap”。 ImageMap 是一种在HTML中定义图像的特定区域并将其链接到不同URL或...
Wikimedia Commons Android应用程序 Wikimedia Commons Android应用程序允许用户将其Android手机/平板电脑中的图片上传到Wikimedia Commons。 在下载该应用程序,或查看我们的。 该应用最初由Wikimedia基金会启动...
Wikimedia Commons Android app The Wikimedia Commons Android app allows users to upload pictures from their Android phone/tablet to Wikimedia Commons. Download the app here, or view our website. ...
6. **图像和多媒体**: 由于维基媒体 Commons存储了大量的图像和其他多媒体资源,该库可能提供了与这些资源交互的接口,如下载、搜索和元数据处理。 7. **身份验证和权限管理**: 支持OAuth或其他认证方式,允许安全...
download_from_Wikimedia_Commons Example.jpg Example_ka.png 使用类别 只需列出我们要下载的文件即可。 download_from_Wikimedia_Commons --category Example_images 使用文件列表 文件列表的格式必须如下,每行...
val imageUrl = " https://upload.wikimedia.org/wikipedia/commons/1/14/Animated_PNG_example_bouncing_beach_ball.png " ApngDecoder .decodeApngAsyncInto(context, URL (url), imageView) 您可以加载文件,...
维基媒体基金会(Wikimedia Foundation Inc.)是支撑着诸如维基百科(Wikipedia.org)等众多知名项目的组织。作为全球访问量前十的网站之一,维基百科的成功离不开其背后强大的技术架构。本文将根据提供的PDF资料,...
via_wikimedia_demo
快速开始使用来自安装: composer require wikimedia/minify用法use Wikimedia \ Minify \ JavaScriptMinifier ;$ input = '/** * @param a * @param b */function sum(a, b) {// Add it up!return a + b;}' ;$ ...
MassUploadLibrary 管理...前处理通过--prepare-alignment CLI参数触发预处理它包括: 为每个字段索引所有元数据,并计算每个字段的值。 将其输出为基于模板的Wikitable-参见或 。 志愿者将使用此Wiki表将机构元数据与
数据集:Wikimedia Dumps / Cirrus 下载或使用的 。 Wikipedia存档有两种格式,一种是Wikimedia转储,其中包含需要扩展的模板;另一种是已扩展的Cirrus转储,可以直接下载和使用(推荐选项)。 由于Cirrus转储看...
Credit-my-cc是一个简单的网页(瑞典语),用于在Wikimedia Commons上的图像使用不当时引起投诉。 如何使用 在Wikimedia Commons上添加图像的文件名,然后按Kolla! 。 在字段Användning中添加未正确使用图像的URL...
它将读取基金会提供的任何XML转储,从XML转储中提取它可以引用的所有图像名称,然后生成一系列BASH或Bourne Unix样式的脚本,这些脚本可以被调用以从“ Wikimedia Commons”和“ Wikipedia”下载所有图像。 该程序...
《DynamicSidebarMetu:构建Wikimedia安装的动态侧边栏》 在Web开发领域,尤其在大型内容管理系统(CMS)如Wikimedia中,提供用户友好的导航是至关重要的。DynamicSidebarMetu是一款专为Wikimedia设计的JavaScript...
《wikimedia-reader:Chrome插件实现Wikimedia Wiki的高效阅读》 wikimedia-reader是一款专为Google Chrome浏览器设计的插件,旨在提供一个更加简洁、高效的途径来阅读来自Wikimedia Wiki的各类信息。这款插件的...
**维基媒体时间线**是一个基于Node.js的项目,它利用了**WIkiMedia allimages API**来构建一个展示图像时间线的应用。这个应用程序能够帮助用户以可视化的方式探索和了解在维基媒体上公开的图片历史,从而为研究、...
Google驱动器到Wikimedia Commons(只读) 该工具的开发目的是将图像直接从Google驱动器上传到Wikimedia Commons,目前已部署在。 :warning: 贡献 :warning: 开发和代码库移至 。 此回购现在仅可读。 阅读如何在上...
可以在查看有关Wikimedia Wiki的(也可以为任何MediaWiki安装安装它)。 有关完整的文档,请参阅 。 要报告问题,请在上创建票证(需要Wikimedia帐户)或使用上的。 荣誉与历史 这是最初由编写的流行工具集的第二...
删除维基百科,维基词典,Wikiquote,Wikibooks,Wikisource,Wikinews,Wikiversity,Wikispecies,MediaWiki,Wikidata,Wikimedia Commons,Wikivoyage,Wikimedia Meta-Wiki,Wikimedia Incubator,Wikimedia ...