我正在使用ImageMagick通过使用以下命令行选项
来调整图像分辨率 convert abc.png -set units PixelsPerInch -density 75 abc_a.png
我需要这个:如果任何图像的宽度超过300 或超过100个高度,我想将其转换为宽度300宽度和100高度,并改变dpi以上(即75dpi)。
任何人都可以帮我吗?
答案 0 :(得分:3)
如果您使用的是Linux / OSX,则可以获得如下图像尺寸:
identify -format "%w %h" input.jpg
因此,如果您想要变量w
和h
中的宽度和高度,请执行以下操作:
read w h < <(identify -format "%w %h" input.jpg)
现在您可以测试宽度和高度,并在必要时进行进一步处理:
[ $w -gt 300 -o $h -gt 100 ] && convert input.jpg -set units ...
或者,如果你想要更详细:
if [ $w -gt 300 -o $h -gt 100 ]; then
convert ...
fi
所以,我提议的整体解决方案看起来像这样:
#!/usr/bin/bash
read w h < <(identify -format "%w %h" input.jpg)
[ $w -gt 300 -o $h -gt 100 ] && convert input.jpg -set units ...
JPEG
或PNG
没有任何区别,因此如果您选择的格式是JPG
,请将PNG
替换为identify -format "%w" input.png > w.txt
set /p w=<w.txt
。
针对Windows进行了更新
好的,没有其他人在帮忙,所以我会解决我(非常)生锈的Windows技能。在Windows下获取类似的图像宽度:
identify -format "%h" input.png > h.txt
set /p h=<h.txt
现在得到身高:
input.png
您现在应该在2个变量w
和h
中拥有图像echo %w%
echo %h%
的宽度和高度,请输入
IF
现在你需要做一些if %w% LEQ 300 GOTO SKIP
if %h% LEQ 100 GOTO SKIP
convert ....
:SKIP
陈述:
^
注意::在Windows中的百分号前面可能需要@
。
注意:您可能需要在脚本中使用双{{1}}个符号,因为Windows不合逻辑。
答案 1 :(得分:0)
您无法同时控制-density
和宽度加身高 !
创建图像时,密度(或分辨率)会自动将图像的宽度和高度调整为一定数量的像素(或者它将被忽略)。
密度(或分辨率),当显示图像时(如在浏览器窗口中,在HTML页面内或在PDF页面上),将不会更改原始图像尺寸:相反,它将会放大或缩小图像上的相应视图。
密度(或分辨率),当在图像的元数据中使用时(每种文件格式都不支持),不会改变图像尺寸 - 它只是提示显示软件,在什么缩放级别想要显示图像(每个图像查看器都不支持)。
现在问你的问题......
尝试此命令:
convert abc.png -scale 300x100\> abc_a.png
仅当
时才会缩放图像缩放将保留原始图像的宽高比。 - 这是您要找的吗?
如果图像较小,则不会进行缩放,abc_a.png
将具有原始尺寸。
如果你想 *强调将图像缩放到300x100,无论如何,并且宽高比都会松动,承受原始图像的一些失真,使用:
convert abc.png -scale 300x100\! abc_b.png
(但是,这也会缩小较小的图像......)