首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android上的位图LockBits?

Android上的位图LockBits?
EN

Stack Overflow用户
提问于 2012-01-02 16:56:39
回答 1查看 2K关注 0票数 3

我在安卓上的程序使用的算法使用了大量的setPixel和getPixel,因此,它非常慢。在.NET上,我可以使用LockBits来加快速度。在Java或者Android上有没有LockBits或者类似的东西?

编辑:经过几次搜索,我找到了copyPixelToBuffercopyPixelFromBuffer,不知道这是不是我需要的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-11 02:06:41

是的,您应该使用上述两种方法,并使用一个ByteBuffer对象,在该对象中,您将首先存储所有的位图数据。这样做之后,将所有缓冲区数据复制到一个字节数组中,然后可以在该数组中执行所有argb操作。完成所有操作后,将这个字节数组包装到一个新分配的ByteBuffer中,最后将该缓冲区中的像素复制回原始位图中。下面是一些示例:"bmpData“是保存图像像素数据的Bitmap对象。

代码语言:javascript
复制
int size = bmpData.getRowBytes()*bmpData.getHeight()*4;
ByteBuffer buf = ByteBuffer.allocate(size);
bmpData.copyPixelsToBuffer(buf);
byte[] byt = buf.array();
  for(int ctr=0;ctr<size;ctr+=4)
    {
      //access array in form of argb. for ex. byt[0] is 'r', byt[1] is 'g' and so on..
    }
ByteBuffer retBuf = ByteBuffer.wrap(byt);
bmpData.copyPixelsFromBuffer(retBuf);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8698983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档