ImageMagick 保留 Exif 数据

4

我有一个调整大小的函数,它的主要工作做得很好,但是没有保存原始图像文件中附带的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个回答

7

看起来这个错误并不是第一次出现。

目前我使用的解决方法是:

exiftool -overwrite_original_in_place -tagsFromFile $source_file $converted_file

试过了。它的效果和宣传的一样。谢谢! - undefined
更多细节:我尝试了ImageMagick 6.9.11-60 Q16 x86_64 2021-01-25版本的转换功能。但是,转换后EXIF信息仍然被删除了。幸运的是,exiftool 12.16版本仍然可以通过nadar提供的解决方法修复这个问题。非常感谢nadar。 - undefined

4

1
似乎-resize也会删除旋转信息,至少在6.8.6版本中是这样。 - Michael
1
@Michael 看起来版本6.9.10仍然存在这个问题。 - Rodrigo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接