Как остановить Image Magick stripImage () от удаления данных разрешения

Я загружаю изображения на свой веб-сайт и оптимизирую их, удаляя данные EXIF ​​с помощью функции StripImage () Image Magick.

$img = new Imagick($image);
$img->stripImage();
$img->writeImage($image);
$img->destroy();

Это работает довольно хорошо, я получаю уменьшенный размер файла, как и ожидалось. Тем не менее, если я открою изображение в Photoshop, Photoshop считывает изображение с разрешением 1 пиксель на дюйм.

Похоже, что stripImage удаляет данные EXIF, которые фотошоп использует для определения разрешения.

Как я могу предотвратить это поведение, снимая все остальное?

1

Решение

Короткий ответ: я не думаю, что вы можете выборочно удалять части данных EXIF ​​с помощью ImageMagick, поэтому вам, вероятно, потребуется извлечь исходную плотность, очистить EXIF, а затем вернуть все, что нужно Photoshop … хотя и не уверен, если Photoshop использует стандартную плотность в заголовке JPEG или значение из данных EXIF.

Во всяком случае, чтобы выработать ответ, вы можете получить все настройки типа плотности в изображении с EXIFtool как это:

exiftool "-*resolution*"  image.jpg
X Resolution                    : 72
Y Resolution                    : 72
Resolution Unit                 : inches

Exiftool описан Вот. Или, как вы знаете, и любите ImageMagick, вы можете использовать identify как это:

identify -verbose IMG_3942.JPG | grep -i reso
Resolution: 72x72
exif:ResolutionUnit: 2
exif:thumbnail:ResolutionUnit: 2
exif:thumbnail:XResolution: 72/1
exif:thumbnail:YResolution: 72/1
exif:XResolution: 72/1
exif:YResolution: 72/1

Вы также можете установить плотность с помощью ImageMagick после удаления данных EXIF ​​следующим образом:

# Strip EXIF then add in resolution
convert IMG_3942.JPG -strip -density 180x180 180.jpg

# Check what happened
exiftool "-*resolution*"  180.JPG
Resolution Unit                 : inches
X Resolution                    : 180
Y Resolution                    : 180

Вы также можете изменить данные EXIF ​​с libexif если вы посмотрите Вот.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]