モバイル端末で撮影した写真画像を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)だとやりたいことができなかった。
無念感でいっぱいだが、やる方法あると思う。