java – Bitmap到Byte [] coversion的更快捷方式

我不是bitmaps的新手,也不是
java的新手.我试图在循环中将高分辨率位图转换为字节数组.请在此处找到代码:

ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 50, stream);
imageByteArray = stream.toByteArray();

当我使用上述方法时,我可以在1秒内转换5张图像.但我需要它更快.我试过ByteBuffer方法也是这样的:

Bitmap bmp = intent.getExtras().get("data");
int size = bmp.getRowBytes() * bmp.getHeight();
ByteBuffer b = ByteBuffer.allocate(size);

bmp.copyPixelsToBuffer(b);

byte[] bytes = new byte[size];

try {
b.get(bytes, 0, bytes.length);
} catch (BufferUnderflowException e) {
// always happens
}

但这很慢(比以前慢):(

请问,有人可以提供更快的方法吗?引导我…

最佳答案 第一个解决方案是正确的解决方案.

但这里可能发生两件事:

>图像可能不是JPEG类型,因此会发生转换,这需要时间
>图像压缩50%,这需要时间

除此之外,如果需要一些时间,我怀疑它可能会更快(成为正确的解决方案).

点赞