ImageMagick 更改图像宽度和高度

use*_*827 2 image imagemagick imagemagick-convert

我正在使用 ImageMagick 通过使用下面的命令行选项来调整图像分辨率

convert abc.png -set units PixelsPerInch -density 75 abc_a.png

我需要这个:如果任何图像的宽度超过 300高度超过 100,我想将其转换为宽度 300 宽度和 100 高度,并更改为高于 dpi(即 75dpi)。

谁可以帮我这个事?

Mar*_*ell 5

如果您使用的是 Linux/OSX,您可以获得像这样的图像尺寸:

identify -format "%w %h" input.jpg
Run Code Online (Sandbox Code Playgroud)

w因此,如果您想要变量和中的宽度和高度h,请执行以下操作:

read w h < <(identify -format "%w %h" input.jpg)
Run Code Online (Sandbox Code Playgroud)

现在您可以测试宽度和高度,并在必要时进行进一步处理:

[ $w -gt 300 -o $h -gt 100 ] && convert input.jpg -set units ...
Run Code Online (Sandbox Code Playgroud)

或者,如果您想更详细:

if [ $w -gt 300 -o $h -gt 100 ]; then
    convert ...
fi
Run Code Online (Sandbox Code Playgroud)

因此,我提出的总体解决方案如下所示:

#!/usr/bin/bash
read w h < <(identify -format "%w %h" input.jpg)
[ $w -gt 300 -o $h -gt 100 ] && convert input.jpg -set units ...
Run Code Online (Sandbox Code Playgroud)

JPEGPNG没有什么区别,所以如果这是您选择的格式,只需将 my 替换JPG为即可。PNG

针对 Windows 进行了更新

好吧,没有其他人帮忙,所以我将发挥我(非常)生疏的 Windows 技能。在 Windows 下获取图像宽度如下:

identify -format "%w" input.png > w.txt
set /p w=<w.txt
Run Code Online (Sandbox Code Playgroud)

现在获取高度:

identify -format "%h" input.png > h.txt
set /p h=<h.txt
Run Code Online (Sandbox Code Playgroud)

您现在应该在 2 个变量中拥有图像的宽度和高度input.pngw并且h通过输入进行检查

echo %w%
echo %h%
Run Code Online (Sandbox Code Playgroud)

现在你需要做一些IF声明:

if %w% LEQ 300 GOTO SKIP
if %h% LEQ 100 GOTO SKIP
convert ....
:SKIP
Run Code Online (Sandbox Code Playgroud)

注意::在 Windows 中您可能需要^在百分号前面。

注意:您可能需要@在脚本中进行双重登录,因为 Windows 不合逻辑。