Android の Air Native Extension で問題が発生しました。
ANE は Actionscript 側からビットマップを受け取り、それを jpeg 形式で圧縮して、ストレージに書き込む Actionscript に送り返します。
すべてが良いですが、最後に 1 つ。
Actionscript のチャネルの順序が Android とは異なるようです。そのため、私の圧縮画像には BLUE の代わりに RED の色が含まれています。コードは次のとおりです。
Actionscript (deng.fzip.FZipLibrary というライブラリを使用して、zip パッケージからビットマップを取得しています)
__image = __fl.getBitmapData(path);
__de = new DataExchange();
__ba = __de.bitmapEncode(__image) as ByteArray;
アンドロイド
...
try {
inputValue = (FREBitmapData)arg1[0];
inputValue.acquire();
int srcWidth = inputValue.getWidth();
int srcHeight = inputValue.getHeight();
Bitmap bm = Bitmap.createBitmap(srcWidth, srcHeight, Config.ARGB_8888);
bm.copyPixelsFromBuffer(inputValue.getBits());
ByteArrayOutputStream os = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.JPEG, 80, os);
compressed = os.toByteArray();
inputValue.release();
} catch (Exception e) {
e.printStackTrace();
}
try {
returnValue = FREByteArray.newByteArray();
returnValue.setProperty("length", FREObject.newObject(compressed.length));
returnValue.acquire();
ByteBuffer returnBytes = returnValue.getBytes();
returnBytes.put(compressed, 0, compressed.length);
returnValue.release();
}
...
画像を送り返す前に、アンドロイド側で赤を青に変換する方法を知っている人はいますか? それとも、アクションスクリプト側で行う必要がありますか?
どうもありがとうございました。
ジャンピエロ