Wand无法正确设置图像分辨率:生成300dpi JPG却显示72dpi求助
解决Wand创建300dpi JPEG但Photoshop显示72dpi的问题
我之前踩过一模一样的坑!Wand这里的逻辑有点反直觉,你设置的resolution在创建Image对象时只是给了图像内部的属性,但保存JPEG时默认不会把这个分辨率元数据写入文件头,这就是Photoshop显示72dpi的原因。下面是具体的解决思路和修正方案:
显式在保存时指定分辨率参数
Wand的JPEG编码器不会自动继承Image对象的分辨率设置,必须在save()方法里再传一遍resolution=(300,300)。修正后的代码如下:from wand.image import Image from wand.color import Color with Image(width=300, height=300, background=Color('white'), units='pixelsperinch', resolution=(300,300)) as ImgBackground: # 关键:保存时显式指定分辨率 ImgBackground.save(filename='ImgOut.jpg', resolution=(300,300))验证元数据是否正确写入
改完代码后,可以用ImageMagick的identify命令确认分辨率:identify -verbose ImgOut.jpg | grep Resolution如果输出是
Resolution: 300x300,说明元数据已经正确写入,要是Photoshop还显示72dpi,大概率是它的缓存问题——重启Photoshop或者重新导入文件试试。理解背后的逻辑
你创建Image时设置的resolution更多是给Wand/ImageMagick内部使用的(比如后续做缩放、打印渲染时参考),但JPEG文件的分辨率信息存在EXIF元数据里,Wand默认不会自动把内部属性同步到EXIF,必须显式告诉编码器要写入这个值。
内容的提问来源于stack exchange,提问作者CrazyTR
相关产品推荐
相关产品推荐

