うにてぃブログ

主にUnityとC#に関する記事を書いていきます

【Unity】Texture2D を Android の Bitmap に変換する

Bitmap のリファレンスを見ていると decodeByteArray という byte[] を Bitmap に変換する処理があった
これを利用して Texture2D を bitmap に変換する

実際に変換できたかは、Bitmap を利用する処理を記述する必要があるが、今回は記載しない

   /// <summary>
    /// Texture を Android で扱う Bitmap に変換
    /// </summary>
    /// <param name="texture"></param>
    /// <returns></returns>
    public static AndroidJavaObject Texture2Bitmap(Texture2D texture)
    {
        AndroidJavaObject ret = null;
        try
        {
            using (var bitmapFactoryClass = new AndroidJavaClass("android.graphics.BitmapFactory"))
            {
                var a = texture.EncodeToPNG();
                ret = bitmapFactoryClass.CallStatic<AndroidJavaObject>("decodeByteArray", a, 0, a.Length);
            }
        }
        catch (Exception e)
        {
            Debug.LogError(e.Message);
        }

        return ret;
    }