2016-12-27 10 views
-1

У меня есть png, который предположительно поврежден, но все равно загружается во все средства просмотра рабочего стола, но не php.Исправить поврежденные png (усеченные данные) в PHP

Ошибка при вызове imagecreatefrompng является:

Warning: imagecreatefrompng(): gd-png: fatal libpng error: Read Error: truncated data in test.php on line 45

Warning: imagecreatefrompng(): gd-png error: setjmp returns error condition in test.php on line 45

Warning: imagecreatefrompng(): 'test.png' is not a valid PNG file in test.php on line 45

Here is the image in question есть в любом случае фиксации изображения в PHP перед дальнейшей обработкой его? Я могу исправить это, открыв его для просмотра изображений на рабочем столе, а затем повторно сохранив его как png, но мне нужно исправить любую сторону сервера изображений, поскольку они входят в этот коррумпированный формат.

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

ответ

0

Раздел 11.2.1 из PNG standard в разделе критических кусков говорит

A valid PNG datastream shall begin with a PNG signature, immediately followed by an IHDR chunk, then one or more IDAT chunks, and shall end with an IEND chunk. Only one IHDR chunk and one IEND chunk are allowed in a PNG datastream.

Как говорит ошибка изображение не имеет кусок IEND. Это неправильный образ PHP, и PHP имеет полное право отказаться от обработки изображения.

Сказанное, как изображения приходят к вам. Вы подключаетесь к другой системе для извлечения изображений, вытаскивания их из базы данных или их загрузки пользователем?

+0

они генерируются инструментом, в котором я не контролирую, поэтому всегда будут повреждены, поэтому мне нужно найти инструмент CLI или аналогичный, чтобы исправить их (в настоящее время они исправляют их, открывая инструменты для работы с изображениями на рабочем столе и повторно сохраняя). – Titan