Khi tôi đang sử dụng copyPixelsFromBuffer và copyPixelsToBuffer, bitmap không hiển thị như cùng một, tôi đã cố gắng bên dưới mã:New Bitmap Changed vào Copy Sử dụng đệm
Bitmap bm = BitmapFactory.decodeByteArray(a, 0, a.length);
int[] pixels = new int[bm.getWidth() * bm.getHeight()];
bm.getPixels(pixels, 0, bm.getWidth(), 0, 0,bm.getWidth(),bm.getHeight());
ByteBuffer buffer = ByteBuffer.allocate(bm.getRowBytes()*bm.getHeight());
bm.copyPixelsToBuffer(buffer);//I copy the pixels from Bitmap bm to the buffer
ByteBuffer buffer1 = ByteBuffer.wrap(buffer.array());
newbm = Bitmap.createBitmap(160, 160,Config.RGB_565);
newbm.copyPixelsFromBuffer(buffer1);//I read pixels from the Buffer and put the pixels to the Bitmap newbm.
imageview1.setImageBitmap(newbm);
imageview2.setImageBitmap(bm);
Tại sao bm Bitmap và newbm không hiển thị cùng một nội dung?
BitmapFactory.Options opts = new Options(); opts.inPreferredConfig = Config.RGB_565; \t \t \t \t \t bm = BitmapFactory.decodeByteArray (a, 0, a.length, opts); Cấu hình bitmap gốc là RGB565, ngay cả khi tôi không đặt cấu hình, cấu hình mặc định là RGB565 ... – Hexor
@Hexor Thực hiện các phương pháp khác được mô tả trong công việc trả lời của tôi? 'Newbm' trông khác như thế nào so với' bm'? –
Kích thước không đúng và chất lượng rất thấp. Tôi đã tìm thấy một giải pháp cho chính mình như thế này, tạo ra một Bitmap gọi là originBm, và được gọi là phương thức giải mã của BitmapFactory để khởi tạo originBm (chỉ cần đảm bảo tham số có thể khởi tạo originBm ngay), sau đó tôi sử dụng newbm = originBm; newbm.copyPixelsFromBuffer (buffer1). Sau đó, newbm có thể hiển thị đúng. Tôi không biết lý do nào gây ra điều này, nhưng tôi nghĩ có thể khi sử dụng copyPixelsFromBuffer(), chúng ta bỏ lỡ một cái gì đó mà phương thức createBitmap() không thể cung cấp cho chúng ta. – Hexor