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)。
谁可以帮我这个事?
如果您使用的是 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)
JPEG或PNG没有什么区别,所以如果这是您选择的格式,只需将 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.png,w并且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 不合逻辑。