3

ファイル エクスプローラーまたは 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
4

2 に答える 2

4

画像を自動的に回転する-auto-orientオプションを追加できます。convert

向きだけを取得する必要がある場合は、 onidentifyでフォーマット指定子を使用する必要があります。次に例を示します。

identify -format '%[exif:orientation]' image_file.jpg

詳細については、ImageMagick ドキュメントのデジタル写真の向きに関するセクションを参照してください。

于 2013-04-28T11:09:57.030 に答える
4

ツールで-orientおよび-auto-orientフラグを試してください。convert

于 2013-04-28T11:10:26.627 に答える