我将一堆 png 文件复制到一个单独的文件夹中,然后对其进行 gzip 压缩,然后将其移至另一个系统。我可以这样做,但我传输的所有 png 文件都在块 idat 中出现 crc 错误。所有这些图像实际上都是屏幕截图。我可以截取新的屏幕截图,但我传输的所有屏幕截图中都有 png 错误。我在传输它们的源和目标上都遇到了这个问题。
根据这个答案: 读取 PNG 图像文件时发生致命错误:不是 PNG 文件
我尝试重新安装 libpng12-dev 和 libpng12-0,但没有效果。
这是我无法打开的 png 文件的详细输出:
$ pngcheck -v myfile.png
File: myfile.png (80028 bytes)
chunk IHDR at offset 0x0000c, length 13
1090 x 306 image, 24-bit RGB, non-interlaced
chunk sBIT at offset 0x00025, length 3
red = 8 = 0x08, green = 8 = 0x08, blue = 8 = 0x08
chunk tEXt at offset 0x00034, length 25, keyword: Software
chunk IDAT at offset 0x00059, length 8192
zlib: deflated, 32K window, default compression
CRC error in chunk IDAT (computed 550cf20e, expected 24c50000)
ERRORS DETECTED in myfile.png
我也尝试使用 Google Chrome 打开这些文件,但我只能看到图像的 20%,其余部分都被绿线剪掉了。
有什么办法可以解决这个问题吗?
操作系统版本:Ubuntu 16.04
答案1
我遇到过同样的问题。
pngcheck -v orang.png
File: orang.png (18315 bytes)
chunk IHDR at offset 0x0000c, length 13
128 x 128 image, 24-bit RGB, non-interlaced
chunk IDAT at offset 0x00025, length 8192
zlib: deflated, 32K window, default compression
CRC error in chunk IDAT (computed 374df55a, expected 907a67be)
ERRORS DETECTED in orang.png
我实际上使用十六进制编辑器(我更喜欢 010 编辑器)进入了该文件,并注意到文件中有一大堆 20。我的文件用于 CTF 挑战,结果发现发生了手动损坏,我所要做的就是删除添加的信息来修复它。
所以我的建议是仔细查看文件,看看是否有任何可疑之处。不幸的是,我找不到任何说明如何处理给出的信息的东西,但我确实解决了出现相同错误的问题。