编辑“︁
PNG
”︁(章节)
跳转到导航
跳转到搜索
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
=== IDAT === 图像数据块 IDAT(image data chunk):它存储实际的数据,在数据流中可包含多个连续顺序的图像数据块。 * 储存图像像数数据 * 在数据流中可包含多个连续顺序的图像数据块 * 采用 LZ77 算法的派生算法进行压缩 * 可以用 zlib 解压缩 值得注意的是,IDAT 块只有当上一个块充满时,才会继续一个新的块。 用 <code>pngcheck</code> 去查看此 PNG 文件 <syntaxhighlight lang="shell">λ .\pngcheck.exe -v sctf.png File: sctf.png (1421461 bytes) chunk IHDR at offset 0x0000c, length 13 1000 x 562 image, 32-bit RGB+alpha, non-interlaced chunk sRGB at offset 0x00025, length 1 rendering intent = perceptual chunk gAMA at offset 0x00032, length 4: 0.45455 chunk pHYs at offset 0x00042, length 9: 3780x3780 pixels/meter (96 dpi) chunk IDAT at offset 0x00057, length 65445 zlib: deflated, 32K window, fast compression chunk IDAT at offset 0x10008, length 65524 ... chunk IDAT at offset 0x150008, length 45027 chunk IDAT at offset 0x15aff7, length 138 chunk IEND at offset 0x15b08d, length 0 No errors detected in sctf.png (28 chunks, 36.8% compression).</syntaxhighlight> 可以看到,正常的块的 length 是在 65524 的时候就满了,而倒数第二个 IDAT 块长度是 45027,最后一个长度是 138,很明显最后一个 IDAT 块是有问题的,因为他本来应该并入到倒数第二个未满的块里. 利用 <code>python zlib</code> 解压多余 IDAT 块的内容,此时注意剔除 '''长度、数据块类型及末尾的CRC校验值'''。 <syntaxhighlight lang="python">import zlib import binascii IDAT = "789...667".decode('hex') result = binascii.hexlify(zlib.decompress(IDAT)) print result</syntaxhighlight> <span id="iend"></span>
摘要:
请注意,所有对gamedev的贡献均可能会被其他贡献者编辑、修改或删除。如果您不希望您的文字作品被随意编辑,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源(详情请见
Gamedev:著作权
)。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
导航菜单
个人工具
未登录
讨论
贡献
创建账号
登录
命名空间
页面
讨论
不转换
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
臺灣正體
查看
阅读
编辑
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息