当前位置: 首页 > 面试题库 >

将Java位图转换为字节数组

孙财
2023-03-14
问题内容
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
}
// do something with byte[]

当我copyPixelsToBuffer对字节的调用全部为0 后查看缓冲区时,从相机返回的位图是不可变的……但这无关紧要,因为它正在执行复制操作。

此代码可能有什么问题?


问题答案:

尝试这样:

Bitmap bmp = intent.getExtras().get("data");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
bmp.recycle();


 类似资料:
  • 我正在使用ADB拍摄android设备的屏幕截图,并将屏幕截图作为原始字节数据接收。 我知道通过的原始字节数据是rgba格式的 红色偏移量为0,绿色偏移量为8,蓝色偏移量为16,Alpha偏移量为24,每个值为1字节。这构成了整个字节数组。 我正在尝试将这个字节数组转换为C#中的位图,它在大多数情况下都工作正常,图像在各个方面看起来都是正确的,除了它带有一个“蓝色色调”——颜色是关闭的。 以下是我

  • 问题内容: 将转换为的快速方法是什么? 例如 问题答案: 看看ByteBuffer类。 设置字节顺序保证了,,和。 或者,你可以手动执行以下操作: 该班是专为尽管这样的脏手任务。实际上,私有定义了以下辅助方法:

  • 问题内容: 我正在尝试通过和不通过将字节数组写入磁盘来验证字节数组,然后使用来打开它。我看了and方法,但是我需要图像的大小(只有将字节流转换为图像时才能得到)。 我的读取功能如下所示: 然后作为基本测试,我尝试将字节数组转换为图像: 如果有人知道我在做什么错,或者有一种更优雅的方法将这些字节转换为对我有真正帮助的图像。 PS:我以为我需要字节数组,因为我对字节进行了处理(使它们出现图像错误)。这

  • 问题内容: 我有一个PIL图像格式的图像。我需要将其转换为字节数组。 现在我需要作为字节数组。 问题答案: 感谢大家的帮助。 终于解决了!! 这样,我不必将裁剪后的图像保存在硬盘中,并且能够从PIL裁剪后的图像中检索字节数组。

  • 我有一个byte[],它是通过从某个表中提取数据返回的。我想把这个字节数组转换成png图像。注意:我没有像其他地方类似的例子中那样从图像中获得字节数组。

  • 问题内容: 我有一个要加密的字节数组,然后转换为字符串,以便可以传输。当我收到字符串时,我必须将字符串转换回字节数组,以便可以对其进行解密。我检查了接收到的字符串是否与发送的字符串(包括长度)匹配,但是当我使用诸如str.getBytes()之类的东西将其转换为字节数组时,它与我的原始字节数组不匹配。 示例输出: 任何想法如何将接收到的字符串转换为与发送的字节数组匹配的字节数组? 谢谢 问题答案: