如何从中心裁剪图像而不用imagemagick调整大小

时间:2016-10-24 18:08:49

标签: bash unix imagemagick imagemagick-convert

for parentDir in *
do
    cd "$parentDir"
    for subDir in *
    do
        cd "$subDir"
        for file in *.*
        do
            convert "$file" -crop 120x95 summary_"$file"
            convert "$file" -crop 160x225 detail_"$file"
        done
        mkdir detail
        mkdir summary
        mv summary_* summary/
        mv detail_* detail/
        cd ..
    done
cd ..
done

这是我的剧本,我需要一种方法来裁剪图像而不需要调整大小,摆脱额外的周围环境。

例如:1200 * 1500图像----> 120px * 90px离中心

2 个答案:

答案 0 :(得分:7)

如果您只想将每个图像裁剪为一个中心部分,请使用

-gravity center -crop WxH+0+0 +repage

否则,每张图片都会获得许多WxH裁剪。

答案 1 :(得分:0)

感谢 @ fmw42 ,我已将此脚本与文件管理器 Dolphin 结合使用,该脚本也可以适用于其他人:

#!/usr/bin/env bash
# DEPENDS: imagemagick (inc. convert)
OLDIFS=$IFS
IFS="
"
# Get dimensions
WH="$(kdialog --title "Image Dimensions" --inputbox "Enter image width and height - e.g. 300x400:")"
# If no name was provided
if [ -z $WH ]
then
    exit 1
fi
for filename in "${@}"
do
    name=${filename%.*}
    ext=${filename##*.}
    convert "$filename" -gravity center -crop $WH+0+0 +repage "${name}"_cropped."${ext}"
done
IFS=$OLDIFS