Исправление поврежденных PNG-файлов, пропускающих блок IEND

4050
Titan

У меня есть .pngфайлы, выведенные с помощью инструмента, который преобразует .emfs в .pngs, но не добавляет к концу блок IEND.

Поэтому другие инструменты, такие как ImageMagick, не будут приближаться к ним, поскольку они обнаружат их как поврежденные:

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

Тем не менее, я могу открыть .pngпрекрасный в настольных приложениях для просмотра изображений с графическим интерфейсом, поэтому мой текущий обходной путь - открыть его в этих приложениях (например, Preview.app) и повторно экспортировать изображение, которое затем будет сохранено с правильными заголовками и т. Д.

Это, очевидно, не масштабируется, и мне нужно что-то, чтобы работать на стороне сервера в автоматическом режиме.

Как мне исправить изображения, желательно с помощью метода, который можно автоматизировать и запустить на стороне сервера, например, с использованием Python?

Это изображение под вопросом.

1

1 ответ на вопрос

0
Titan

Удалось сделать это в Python с помощью:

from PIL import Image file_in = "test.png"  img = Image.open(file_in)  file_out = "test-fixed.png"  img.save(file_out) 

Требуется ПИЛ / Подушка pip install Pillow

Эта тема была удалена, потому что у нее нет принятого ответа. Вопрос написан как запрос продукта, поэтому он привлекает близкие голоса. Возможно, вы захотите принять свой собственный ответ. fixer1234 6 лет назад 1

Похожие вопросы