如果在 GitHub 上粘贴高分辨率图像(例如 macOS 屏幕截图),它会以正确的尺寸显示。但如果在 Stack Overflow 上粘贴相同的图像,它会比应有的大小大(例如,macOS 屏幕截图大 2 倍,但其他图像可能大 1.5 倍或 3 倍)。这个问题在这里得到了很好的描述:https://meta.stackexchange.com/q/161111.
由此我得出结论,可以以某种方式检测高分辨率图像(即与非高分辨率图像区分开)。
因此我的问题:是否可以使用 ImageMagick 的
magick identify
或者 ExifTool 来检测它们?
测试图片:https://github.com/jsx97/test/blob/main/macos-screenshot.zip
根据马丁·布朗的评论,尝试回答我自己的问题:
根据您的示例测试图像,问题在于它的 dpi 为 144,但许多渲染引擎会忽略该字段,以便以 72 dpi 渲染。所以是 2 倍大。在我看来,一个可接受的修复可能是,如果 image_dpi>72,则按因子 72/image_dpi 重新缩放其尺寸,然后将 dpi 设置为 72。具有其他可能的重新缩放因子之一的样本可以澄清这是否正确或不是。 –
input=input.png
output=output.png
densityX=$(magick identify -format %x $input)
densityY=$(magick identify -format %y $input)
if (( densityX > 72 || densityY > 72 )); then
width=$(magick identify -format %w $input)
height=$(magick identify -format %h $input)
width=$(( width * 72/densityX ))
height=$(( height * 72/densityY ))
magick $input -resize ${width}x${height} -units PixelsPerInch -density 72 $output
fi