我有一个调整大小的功能,可以完成它的主要工作,但是不能保存
原始图像文件附带的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数据保存在图像上?
答案 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