ファイル エクスプローラーまたは Shotwell で、一部の画像が縦向きモードのように見え、一部が横向きになっています。しかし、identify
コマンドはそれらを区別できません:
風景 :
IMG_0064.JPG JPEG 3648x2736 3648x2736+0+0 8-bit DirectClass 3.319MB 0.000u 0:00.000
ポートレート :
IMG_0108.JPG JPEG 3648x2736 3648x2736+0+0 8-bit DirectClass 3.004MB 0.000u 0:00.000
次のスクリプトを使用して、画像の幅と高さを取得します。
サムネイルを作成するための画像のバッチ トリミングとサイズ変更
オリエンテーションも取得する方法はありますか?
-------------------------------------------------- --------------------------------------------
私が望んでいたのは、画像の切り抜きとサイズ変更をバッチ処理してサムネイルを作成し (解決策)、プールにポートレート画像を取得すると、それらを回転させることでした。
完全な解決策:
#! /bin/bash
for img in *.JPG ; do
identify=$(identify "$img")
[[ $identify =~ ([0-9]+)x([0-9]+) ]] || \
{ echo Cannot get size >&2 ; continue ; }
width=${BASH_REMATCH[1]}
height=${BASH_REMATCH[2]}
let good_width=height+height/2
orientation=$(identify -format '%[exif:orientation]' $img)
if (( orientation > 1 )) ; then # crop horizontally
echo "$img is portrait"
name="temp"
convert -rotate 90 "$img" "$name"
mv "$img" "portrait_$img"
mv "$name" "$img"
fi
if (( width < good_width )) ; then # crop horizontally
let new_height=width*2/3
new_width=$width
let top='(height-new_height)/2'
left=0
elif (( width != good_width )) ; then # crop vertically
let new_width=height*3/2
new_height=$height
let left='(width-new_width)/2'
top=0
fi
convert -auto-orient "$img" -crop "$new_width"x$new_height+$left+$top -resize 120x80 thumb-"$img"
done