【Unity】Texture2DをEncodeToJPGしてmBaaSに無事に送る方法
こんにちは。VyseArtプログラム担当のトナカイです。
今回はタイトルの件ではまってしまい、無事に脱出できたのでメモとして残しておきます。
現在、アンドロイド端末のギャラリーから画像を取得して、その画像をmBaaSに無事に送信するというコードを作っています。
そこで躓くのが、(無料のプラグインで)(ギャラリーから)取得したTexture2D型のテクスチャ(画像イメージ)をmBaaSに送るときにどうしても送れないという状況でした。
原因ですが、ギャラリーから取得した画像が、読み書き不可(isReadable=false)とういのがデフォルトで決まっているためです。
そのため、EncodeToJPGやそのあとのmBaaSに送信するコードがうまく通らず、0バイトの画像がmBaaSにたびたび送られました。
UnityエディタのImportSettingsで(AdvancedのReadandWrite)に手動でチェックを入れれば、画像テクスチャは無事(EncodeToJpgなどできてバイト配列にし)mBaaSに送れるのですが、Androidのギャラリーから取得したテクスチャはスクリプト上のものなので、Unityエディタ上の読み書き設定を変更することがどうしてもできませんでした。
解決方法は、下記のサイトからできました。
https://stackoverflow.com/questions/44733841/how-to-make-texture2d-readable-via-script
このサイトの下部にあるメソッドを使い、要は取得したテクスチャをTexture2D型で新たに生成して、その際にisReadableをTrueに設定して生成をしました。
すると、無事コードの続きEncodeToJPGができ、それをmBaaSに送信するコードも通り、目的を達成することができました。
以上です。
トナカイ