私は私のプロジェクトの一つで、以下のようにそれを使用してきたし、これまでのところ、それはかなり固体となっています。私はそれがPNG形式で圧縮されていない限り、それがどれほど厄介であるかわからない。
byte[] bytesImage;
Bitmap bmpOld; // Contains original Bitmap
Bitmap bmpNew;
ByteArrayOutputStream baoStream = new ByteArrayOutputStream();
bmpOld.compress(Bitmap.CompressFormat.PNG, 100, baoStream);
bytesImage = baoStream.toByteArray();
bmpNew = BitmapFactory.decodeByteArray(bytesImage, 0, bytesImage.length);
編集:私はRGBを使用するthis postからコードを適応してきましたので、以下のコードは、あなたのために働く必要があります。私はまだそれをテストする機会がなかったので、調整が必要な場合があります。上記の回答にコメントから
Byte[] bytesImage = {0,1,2, 0,1,2, 0,1,2, 0,1,2};
int intByteCount = bytesImage.length;
int[] intColors = new int[intByteCount/3];
int intWidth = 2;
int intHeight = 2;
final int intAlpha = 255;
if ((intByteCount/3) != (intWidth * intHeight)) {
throw new ArrayStoreException();
}
for (int intIndex = 0; intIndex < intByteCount - 2; intIndex = intIndex + 3) {
intColors[intIndex/3] = (intAlpha << 24) | (bytesImage[intIndex] << 16) | (bytesImage[intIndex + 1] << 8) | bytesImage[intIndex + 2];
}
Bitmap bmpImage = Bitmap.createBitmap(intColors, intWidth, intHeight, Bitmap.Config.ARGB_8888);
出典
2013-09-05 07:45:27
Jon
をあなたがnull以外のバイト配列を取得していますか?スニペットが役に立ちます。 –
はい-128から127の範囲のバイト配列を取得しています – Haris
画像がデコードできないようです。実際のイメージデータのために移動する必要があるオフセット(ヘッダーのため、おそらく)はありますか? –