首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何阻止图像Magick stripImage()删除分辨率数据

如何阻止图像Magick stripImage()删除分辨率数据
EN

Stack Overflow用户
提问于 2016-03-06 12:23:41
回答 1查看 924关注 0票数 1

我将图片上传到我的网站,并通过使用Image的stripImage()函数删除EXIF数据来优化它们。

代码语言:javascript
运行
复制
$img = new Imagick($image);
$img->stripImage();
$img->writeImage($image);
$img->destroy();

它工作得很好,我得到了减少的文件大小,如预期。但是,如果我在Photoshop中打开图像,photoshop将图像读取为分辨率为每英寸1个像素。

似乎stripImage正在删除photoshop用来确定分辨率的EXIF数据。

我如何在剥除其他东西的同时防止这种行为?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-06 13:02:54

简单的回答是,我认为您不能有选择地用ImageMagick删除部分EXIF数据,所以您可能需要提取原始的密度,清除EXIF,然后放回任何Photoshop所需的.但不确定的是,Photoshop是否使用JPEG头中的标准密度或EXIF数据中的值。

无论如何,要想得到答案,您可以在一个具有如下EXIFtool的图像中获得所有的密度类型设置:

代码语言:javascript
运行
复制
exiftool "-*resolution*"  image.jpg
X Resolution                    : 72
Y Resolution                    : 72
Resolution Unit                 : inches

Exiftool被描述为这里。或者,正如您所知,并且热爱ImageMagick,您可以这样使用identify

代码语言:javascript
运行
复制
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设置密度,如下所示:

代码语言:javascript
运行
复制
# 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数据。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35826775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档