java - 将Java位图转换为字节数组

标签 java android serialization bitmap 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
  }
  // 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();

关于java - 将Java位图转换为字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4989182/

相关文章:

c# - 不显示具有 CollectionDataContract 属性的名称

java - 支持大整数的单词列表生成器

java - 在java中找到正确的正则表达式模式

java - 如何从字符串中删除�?

android - 自定义 Android View 的自定义类型属性

android - 将 float 操作按钮变形为相关操作

javascript - 规避 ERROR Converting circular structure to JSON when doing JSON.stringify()?

java - 从列表中删除对象 - 包含字符串 - 比较列表

java - 微调器简单项目模板获得不同的大小

C# - 如何对对象本身进行 xml 反序列化?