by @sharkattack51

May 9, 2015

Exifとの格闘の記録

モバイル端末で撮影した写真画像をUnityの実行時にダウンロード。 jpegの画像方向が違っていた。原因はExif。

Orientation

ExifのOrientation情報見てみる。 調べたらなんか情報が錯綜していたが内容としてはこれっぽい。

http://hackmylife.net/archives/7400448.html

Orientation 補正方法
1 そのまま
2 上下反転
3 180度回転
4 左右反転
5 上下反転、時計周りに270度回転
6 時計周りに90度回転
7 上下反転、時計周りに90度回転
8 時計周りに270度回転

しかし、ここらへんのExif確認ツールで見ても、ツールごとに表示が違うんだがなんなのこれ。

変に日本語化されてないし、確認はExifToolが良い気がする。

Exifライブラリ(C#)

さて、こんなのあったので自前で判定してやってみる。 http://blog.ch3cooh.jp/entry/20111222/1324552051

うーなんか自前すぎるしライブラリあるんちゃうん。あった。

~~~

その後、だいぶつらみがあったので途中で萎えて辞めた。

- 回転方向の判定 > できた
- 判定した方向でTexture2Dから取ったColor32配列を回転させる > できた
- 画像が長方形の時、回転後の配列サイズが...元のTexture2Dサイズが.. > 萎え

ImageMagick

少し調べてImageMagickに神オプションを発見。すべてよしなにやってくれるAutoOrientオプションがー。

今回の案件的にはサーバーサイドで対応可能なので、そっちでやってもらうことにした。

ImageMagick C#ラッパー

ImageMagickのC#ラッパーあるっぽいし、AutoOrient()でやってくれるっぽいんでちょっとやってみる。

WPFとかだったらVisualStudioでNugetできる。ていうか調べると大体System.Drawingのクラス使っててUnityのMonoではつらい印象。

結論

Magick.NETがいけそうだったけど、Unity(Mono)だとやりたいことができなかった。 無念感でいっぱいだが、やる方法あると思う。