画像のEXIFタグを考慮して写真を回転するには
スマートフォンで撮影した写真は,EXIFタグのorientationにより,90
°の回転がかけられていることがあります。
参考: EXIFタグの検証にはexiftoolが便利です。
向きを調べるには
exiftool -Orientation -n image.jpg
向きを変えるには
exiftool -Orientation=8 -n image.jpg
向きはGET PICTURE METADATAでGETすることができます。残念ながらSETすることはできません。
var $orientation : Integer
GET PICTURE METADATA($image; TIFF orientation; $orientation)
EXIFタグで向きが設定された画像をREAD PICTURE FILEでピクチャに取り込んだ場合,orientationは考慮されず,標準(0
)の向きで画像が表示されます。これは撮影者が意図した向きではないかもしれません。
前述したようにEXIFタグを確認することはできますが,画像を補正するために回転する方法がありません。
SVGのtransformで回転させることもできますが,アフィン変換による回転になるため,画素数が多い写真の回転はそこそこ時間がかかります。
90
°または270
°の回転さえできれば良いことを考えると,もっとシンプルな方法が理想的です。
内部的にOpenCVのcv::rotate
をコールするだけの簡単なプラグインです。
- ROTATE_90_CLOCKWISE (90)
- ROTATE_180 (180)
- ROTATE_90_COUNTERCLOCKWISE (279)
- ROTATE_0 (0)
status:=Rotate image(image; rotate; format)
フォームを表示すると画像が縦向きに表示されます。Finderでは横向きに表示される写真です。4DはEXIFの向きを考慮していないことがわかります。
0
°の回転を適用すると,EXIFタグで指定されている本来の向きになります。
よくよく考えたらCONVERT PICTUREで別の(EXIFタグをサポートしていない)画像形式に変換すれば,0
°の回転を適用するのと同じ結果が得られるのでは・・・