ImageMagick保留Exif数据

时间:2014-03-20 13:39:35

标签: resize 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 个答案:

答案 0 :(得分:4)

如果要保留exif数据,则不应使用thumbnailImage图像方法。以下内容来自ImageMagick(http://www.imagemagick.org/script/command-line-options.php#thumbnail)的文档:

-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

答案 1 :(得分:2)

似乎错误不是for the first time

我目前使用的解决方法:

exiftool -overwrite_original_in_place -tagsFromFile $source_file $converted_file