我不是位图新手,也不是 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%,这需要时间
除此之外,如果这需要一些时间,我怀疑它是否会运行得更快(这是正确的解决方案)。
关于java - Bitmap 到 Byte[] 转换的更快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23240887/