実行時にいくつかの値を変更したいプロジェクトに PNG ファイルがあります。
ByteArrayOutputStream output = new ByteArrayOutputStream();
try {
InputStream input = getIntro().getAssets().open("image.png");
byte[] tmp = new byte[1024];
int ret = 0;
while ((ret = input.read(tmp, 0, 1024)) >= 0) {
output.write(tmp, 0, ret);
}
} catch (IOException ex) {
System.out.print(ex);
}
byte[] imgArray = output.toByteArray();
imgArray[1000] = (byte) Color.red(Const.SOMEVALUE);
return BitmapFactory.decodeByteArray(imgArray, 0, imgArray.length);
行で何をしてもimgArray[1000] = (byte) Color.red(MyApplication.COLOR_BOARD_BG)
、空の画像が得られます。その行を使用せずにバイト配列を手動で変更しても問題ありませんが、(ヘッダーまたは本文で) 変更した内容は何も変わりません = 空白の画像です。
実際にはパレット情報を変更しようとしますが、ここでは例として、画像データ内の値である 1000 番目の要素を変更します。