エンジニア戦記

【Unity】カメラロールとかの端末の画像を取得させる

f:id:nuakam:20180119185456p:plain

Unityの記事ばっかりだ..

結論

できた
f:id:nuakam:20180119185703j:plain


端末の画像選択はOS側の処理によるため、意外と面倒で大変。
いろいろなやり方がありそうだけど調べる時間がなくて、、、

やり方

先人のコピペ

スクリプト言語はあるものをパズルのようにはめ込む方法が最優秀
なるべく自作しちゃいけないものさ。

そもそもUnityはそういうものらしい。
プログラマーじゃなくても使えるように。


画像選択に使ったのはコレ。
blog.kakeragames.com


2D開発してるからちょこちょこ改造が必要。

でも無料。

嬉P。
感謝感激。

Assetストアで買ったら70$ぐらいする。
たけーよ


このunimgpicker内部処理は作者サイトで読むとして、注意事項として諸々のところを記載。

画像が消える

サンプルシーンとスクリプトを見ればだいたいワカルけど、画像のパスは変数pathに保存している。
そもそもサンプルは選択した画像をテクスチャに貼るものだからだ。


このpathは関数を抜けると作成したディレクトリごと削除されるため、画像そのものの編集をする場合にはロード内で行う必要がある。

今回は画像をbase64化し、サーバーに送信したかったため、選択成功時にbyte化し、外部のスクリプト変数に保存。


送信時にbyte[]画像をbase64エンコードした。

IOSにイラつく

IOSの純正カメラアプリは画像の向きがあべこべ。

撮った画像をappleの何らかの謎ポリシーに従って変な方向で保存しやがる。
向き情報はExifになんだかよくわからない形式で保存している。


Unityは画像を読み込む時Exif情報を無視する。
そのためImage spriteに貼ろうがtextureに貼ろうが向きがばらっばらになる。



デザイナーは言う…「直せ」と。


そこでここを参考にした。
Exifとの格闘の記録 | Dokyuments


彼の記事の通り格闘だった。

記事にある通り色々なスクリプト入れてExif情報は取得できた。


…はずだった‥


なんとIOSは形式が違うのか何なのか情報が全部0になる。


記事にある通りサーバーでやってくれるように頼んだ。


サーバーの人「負荷が大きいからアプリ側でやって」



ふおおおおおおおおおおおおおおおおおおおおおおおおお


IOSはAsset買ってもらいました($70)

prime31
はじめから買ってれば。。。



他にも画像縮小、切り取りもできるようにしたけど、それは後日。需要があれば。

プライバシーポリシー 免責事項