修复PHP中的损坏的png(截断的数据)

时间:2016-12-27 02:14:51

标签: php php-gd

我有一个可能已损坏的png,但仍会在所有桌面图像查看器中加载,但不会加载php。

致电imagecreatefrompng时的错误是:

  

警告:imagecreatefrompng():gd-png:致命的libpng错误:读取错误:   在第45行的test.php中截断数据

     

警告:imagecreatefrompng():gd-png错误:setjmp返回错误   第45行的test.php中的条件

     

警告:imagecreatefrompng():'test.png'不是有效的PNG文件   第45行的test.php

Here is the image in question无论如何在进一步处理之前用PHP修复图像?我可以通过打开桌面图像查看器然后重新保存为png来修复它,但我需要修复任何图像服务器端,因为它们以这种损坏的格式进入。

pngcheck test.png
test.png  file doesn't end with an IEND chunk

1 个答案:

答案 0 :(得分:0)

关键块部分下PNG standard的第11.2.1节说

  

有效的PNG数据流应立即以PNG签名开头   然后是IHDR块,然后是一个或多个IDAT块,并且应该结束   带有IEND块。只允许一个IHDR块和一个IEND块   在PNG数据流中。

由于错误显示图像没有IEND块。它不是有效的PHP映像,PHP完全有权拒绝处理映像。

话虽如此,图像是如何传达给你的。您是否正在连接到另一个系统以检索图像,从数据库中提取图像,还是由用户上传图像?