我有一个可能已损坏的png,但仍会在所有桌面图像查看器中加载,但不会加载php。
致电imagecreatefrompng
时的错误是:
警告:imagecreatefrompng():gd-png:致命的libpng错误:读取错误: 在第45行的test.php中截断数据
警告:imagecreatefrompng():gd-png错误:setjmp返回错误 第45行的test.php中的条件
警告:imagecreatefrompng():'test.png'不是有效的PNG文件 第45行的test.php
无论如何在进一步处理之前用PHP修复图像?我可以通过打开桌面图像查看器然后重新保存为png来修复它,但我需要修复任何图像服务器端,因为它们以这种损坏的格式进入。
pngcheck test.png
test.png file doesn't end with an IEND chunk
答案 0 :(得分:0)
关键块部分下PNG standard的第11.2.1节说
有效的PNG数据流应立即以PNG签名开头 然后是IHDR块,然后是一个或多个IDAT块,并且应该结束 带有IEND块。只允许一个IHDR块和一个IEND块 在PNG数据流中。
由于错误显示图像没有IEND块。它不是有效的PHP映像,PHP完全有权拒绝处理映像。
话虽如此,图像是如何传达给你的。您是否正在连接到另一个系统以检索图像,从数据库中提取图像,还是由用户上传图像?