入力サイズや比率に関係なく、JPG画像のサイズを同じ合計ピクセルサイズ(6MPxなど)に縮小したいと思います。
もちろん、サイズを変更することもmogrify
できます。convert
これ...
mogrify -resize 3000x3000 file.jpg
...3:2比率の写真の場合は6MPxになります。
しかし、これはパノラマのような異常な規模では機能しません。
Q:指定されたターゲットピクセルサイズを使用mogrify
/インポートする方法は?convert
ベストアンサー1
このために小さなスクリプトを作成しました。
$ cat ~/bin/resize_picture
:
#!/bin/bash
set -euo pipefail
usage(){
cat <<EOF
# USAGE:
resize_picture TARGET_PX FILE...
# EXAMPLES:
resize_picture 6000000 *.jpg
find . -type f -name '*.jpg' resize_picture 8000000 {} +
EOF
exit
}
[ $# -lt 2 ] || [ "$1" = "-h" ] && usage
target=$1
shift
for file in "$@"; do
printf "Processing %s ... " "$file"
percent=$(
identify -format '%w %h' -- "$file" \
| awk -v t="$target" '
$1*$2 > t { r=$1/$2; printf "%.0f",sqrt(t*r)/$1*100 }
$1*$2 <= t {printf "%d",100}
'
)
if [ $percent -lt 100 ] ; then
mogrify -resize "$percent"% "$file"
printf 'Done (%d %%)\n' "$percent"
else
echo "Nothing to do"
fi
done