Images
將圖像縮放到固定的目標像素大小
無論輸入大小或比率如何,我都想將 JPG 圖像的大小減小到相同的總像素大小(例如 6MPx)。
當然
mogrify
或者convert
可以調整大小:這個 …
mogrify -resize 3000x3000 file.jpg
…對於比例為 3:2 的圖片,將為我提供 6MPx。
但這不適用於不尋常的比例,例如全景圖。
Q: 如何使用
mogrify
/convert
得到指定的目標像素大小?
我做了一個小腳本來做。
$ 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