我将图片上传到我的网站,并通过使用Image的stripImage()函数删除EXIF数据来优化它们。
$img = new Imagick($image);
$img->stripImage();
$img->writeImage($image);
$img->destroy();它工作得很好,我得到了减少的文件大小,如预期。但是,如果我在Photoshop中打开图像,photoshop将图像读取为分辨率为每英寸1个像素。
似乎stripImage正在删除photoshop用来确定分辨率的EXIF数据。
我如何在剥除其他东西的同时防止这种行为?
发布于 2016-03-06 13:02:54
简单的回答是,我认为您不能有选择地用ImageMagick删除部分EXIF数据,所以您可能需要提取原始的密度,清除EXIF,然后放回任何Photoshop所需的.但不确定的是,Photoshop是否使用JPEG头中的标准密度或EXIF数据中的值。
无论如何,要想得到答案,您可以在一个具有如下EXIFtool的图像中获得所有的密度类型设置:
exiftool "-*resolution*" image.jpg
X Resolution : 72
Y Resolution : 72
Resolution Unit : inchesExiftool被描述为这里。或者,正如您所知,并且热爱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您还可以在剥离EXIF数据之后使用ImageMagick设置密度,如下所示:
# 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如果您查看libexif,也可以使用这里修改EXIF数据。
https://stackoverflow.com/questions/35826775
复制相似问题