如何使用ImageMagick调整图像大小? (苹果系统)

时间:2018-07-12 15:37:37

标签: image macos terminal

有一堆图像,我想减少每个图像10像素的高度和宽度。问题在于每个图像都有不同的大小(即平均高度和宽度)。我发现了如何使用ImageMagick在终端中调整图像大小,但是它只能将图像调整为固定大小(例如:convert example.png -resize 200x100 example.png)。我需要将每个图像的大小调整为((当前宽度)-10px)x((当前高度)-10px)我是编程新手,请耐心等候:)

1 个答案:

答案 0 :(得分:0)

如果使用Imagemagick 7,则可以在所有图像上编写循环。在Unix语法中(假设图像名称中没有空格):

cd to your current directory
list=$(ls)
for img in $list; do
magick $img -resize "%[fx:w-10]x%[fx:h-10]" $img
done

如果您不想覆盖图像,请创建一个新目录并将该目录的路径放在输出之前。

如果您想一次完成一张以上的图片,则可以执行以下操作:

cd to your current directory
magick * -resize "%[fx:s.w-10]x%[fx:s.h-10]" result.suffix

这将使生成的图像全部具有相同的名称,但附加数字,例如result-0.suffix,result-1.suffix等。

如果您正在使用Imagemagick 6,则必须在单独的命令中预先计算尺寸。

cd to your current directory
list=$(ls)
for img in $list; do
dimensions=$(convert image -format "%[fx:w-10]x%[fx:h-10]" info:)
convert $img -resize $dimensions $img
done

请注意,调整大小并不一定会为您提供所需的结果,因为Imagemagick会尝试保持纵横比。因此,如果要强制使用确切的大小,则需要添加!调整大小参数。但是,这将导致一些失真,尽管对于仅调整10个像素的大小来说可能不会太多。

一种更简单的方法是将周围的所有像素都刮掉5个像素。然后,您可以使用mogrify来制作整个文件夹:

cd to current directory after creating a new directory for the output if desired:
mogrify -path path/to/new_directory -shave 5x6 *


在Imagemagick 7中,该值为magick mogrify ...