java - Bitmap 到 Byte[] 转换的更快方法

标签 java android optimization bitmap

我不是位图新手,也不是 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
}

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

拜托,有人可以提供更快的方法吗?引导我...

最佳答案

第一个解决方案是正确的。

但是这里可能会发生两件事:

  1. 图片可能不是JPEG类型,所以要进行转换,这需要时间
  2. 图像压缩了 50%,这需要时间

除此之外,如果这需要一些时间,我怀疑它是否会运行得更快(这是正确的解决方案)。

关于java - Bitmap 到 Byte[] 转换的更快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23240887/

相关文章:

java - 在 switch 语句退出选项中尝试 catch

java - 如何使用 Java mongodb 驱动程序中的 "_id"字段查询文档?

Android C2DM ROLE 账号和包名

android - 如何在按钮的另一种样式中使用一种样式?

c - GCC优化对位操作的有效性

java - 使用 Java API 在 Smartsheet 中复制工作表

java - Gradle:是否有更好的方法将相同的依赖项分配给2种配置?

当应用程序在后台运行时,Android Listener 停止运行

debugging - 如何跟踪重复分配的生命周期堆使用情况

algorithm - 0/1 背包动态规划优化,从2D矩阵到1D矩阵