1. Специфическое разрешение
Если ваша цель в конце концов, иметь определенное разрешение (например, 1920х1080), то это легко, используя -geometry
, циркумфлекс/шлет/крыша/символ дома (^
) и -crop
:
convert in.jpg -geometry 1920x1080^ -gravity center -crop 1920x1080+0+0 out.jpg
Для цикла по нескольким JPG файлов:
for i in *jpg
do convert "$i" -geometry 1920x1080^ -gravity center -crop 1920x1080+0+0 out-"$i"
done
2. соотношение сторон урожая ONl y
Если вы хотите избежать масштабирования, вам нужно рассчитать новую длину обрезанной стороны за пределами Imagemagick. Это более активное участие:
aw=16 #desired aspect ratio width...
ah=9 #and height
in="in.jpg"
out="out.jpg"
wid=`convert "$in" -format "%[w]" info:`
hei=`convert "$in" -format "%[h]" info:`
tarar=`echo $aw/$ah | bc -l`
imgar=`convert "$in" -format "%[fx:w/h]" info:`
if (($(bc <<< "$tarar > $imgar")))
then
nhei=`echo $wid/$tarar | bc`
convert "$in" -gravity center -crop ${wid}x${nhei}+0+0 "$out"
elif (($(bc <<< "$tarar < $imgar")))
then
nwid=`echo $hei*$tarar | bc`
convert "$in" -gravity center -crop ${nwid}x${hei}+0+0 "$out"
else
cp "$in" "$out"
fi
Я использую 16: 9 в примерах, ожидая, что это будет более полезным, чем 3: 2 для большинства читателей. Измените оба входа 1920x1080
в решении 1 или aw
/ah
переменных в решении 2, чтобы получить желаемое соотношение сторон.
Для сценария [Fred's ImageMagick Scripts] есть сценарий (http://www.fmwconcepts.com/imagemagick/aspectcrop/index.php). Он содержит много объяснений о том, как он достигает эффекта. Если вы ведете IM на другом языке скрипта, может быть проще сделать математику там. –
Замечательно! Много полезных вещей там BTW :) –