为了账号安全,请及时绑定邮箱和手机立即绑定

将Java位图转换为字节数组

将Java位图转换为字节数组

慕盖茨4494581 2019-08-09 16:00:03
将Java位图转换为字节数组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 ...从摄像机返回的位图是不可变的......但这应该无关紧要,因为它正在进行复制。这段代码有什么问题?
查看完整描述

3 回答

?
杨魅力

TA贡献1811条经验 获得超6个赞

尝试这样的事情:

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


查看完整回答
反对 回复 2019-08-09
?
PIPIONE

TA贡献1829条经验 获得超9个赞

你需要回放缓冲区吗?

此外,如果位图的步幅(以字节为单位)大于以像素为单位的行长度*字节/像素,则可能会发生这种情况。使字节长度为b.remaining()而不是size。


查看完整回答
反对 回复 2019-08-09
  • 3 回答
  • 0 关注
  • 866 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信