ImageMagick Сохранение Exif данных
У меня есть функция изменения размера, которая выполняет свою основную работу правильно, но не сохраняет данные exif, которые идут с исходным файлом изображения. Кажется, все правильно, пока я не позвоню ->writeImage();
функция, которая, кажется, удаляет exif-данные изображения.
$resizeimage= new Imagick($image);
$exifDataArray = $resizeimage->getImageProperties("exif:*");
$resizeimage->thumbnailImage($width,$height);
$resizeimage->setImageCompression(imagick::COMPRESSION_JPEG);
$resizeimage->setImageCompressionQuality(90);
echo $resizeimage->setImageProperty('Exif:Make', 'BLABLABLA');
$resizeimage->writeImage();
$updated= new Imagick($image);
echo $updated->getImageProperty('Exif:Make');
Обратите внимание, что если я print_r($exifDataArray);
он показывает данные exif. Чтобы внести изменения, я помещаю 'Exif:Make', 'BLABLABLA' и вижу, записаны ли новые данные exif на изображение, и правильно ли оно написано.
но после того как я resizeimage->writeImage();
В файле изображения больше нет данных exif.
Кто-нибудь может помочь? Есть ли способ сохранить данные exif на изображении?
2 ответа
Кажется, ошибка не там в первый раз.
Обходной путь, который я использую в данный момент:
exiftool -overwrite_original_in_place -tagsFromFile $source_file $converted_file
Вы не должны использовать thumbnailImage
метод изображения, если вы хотите сохранить данные exif. Ниже приводится документация ImageMagick ( http://www.imagemagick.org/script/command-line-options.php):
-thumbnail geometry
This is similar to -resize, except it is optimized for speed and any image
profile, other than a color profile, is removed to reduce the thumbnail size.
Вместо этого вы должны использовать метод resizeImage ( http://www.php.net/manual/en/imagick.resizeimage.php)