Bash:如果宽度/高度超过特定值

时间:2015-11-08 20:25:12

标签: bash imagemagick

如果输入图像宽度或高度超过特定值(Linux或Mac OS X,命令行),是否可以批量调整图像大小?

我在这里找到similar question,但那只是一张图片。

2 个答案:

答案 0 :(得分:1)

可能的解决方案:

#!/bin/sh

set -e
maxwidth="1900"  # in pixels, the widest image you want to allow.

#find all .jpg in current dir and subdirectories
FILES="$(find . -iname '*.jpg')"

for imagefile in $FILES
do
if [ -f "$imagefile" ]; then
imgwidth=`sips --getProperty pixelWidth "$imagefile" | awk '/pixelWidth/ {print $2}'`
else
    echo "Oops, "$imagefile" does not exist." 
    exit
fi

if [ $imgwidth -gt $maxwidth ]; then
    echo " - Image too big. Resizing..."
    sips --resampleWidth $maxwidth "$imagefile" > /dev/null 2>&1  # to hide sips' ugly output 
    imgwidth=`sips --getProperty pixelWidth "$imagefile" | awk '/pixelWidth/ {print $2}'`
    imgheight=`sips --getProperty pixelHeight "$imagefile" | awk '/pixelHeight/ {print $2}'`
    echo " - Resized "$imagefile" to $imgwidth""px wide by $imgheight""px tall";
fi
done

答案 1 :(得分:0)

使用ImageMagick套件中的mogrify

mogrify -resize 1024x768\> *.jpg

按比例调整超过1024x768的所有jpegs。首先在图像的COPY上尝试使用它。添加-path output以将结果写入名为output的子目录 - 首先使用mkdir output