使用字节访问位图内存信息

时间:2010-11-10 05:12:06

标签: c# java bitmap byte

(关于我正在研究的Java项目,我上周在SO上发了三篇文章。我感到内疚,但到底是什么,你的答案太棒了。)

这是C#中的一大块代码:

Bitmap bitmap = ...

int dstStride = bitmap.Stride;

byte* bdst = (byte*)bitmap.Scan0;

我想在Java中创建一个等效的算法。基于other, similar questions,我开始认为这是不可能的。

我实际上可以复制我的位图的步幅信息,但当然,byte*几乎不可能重现。稍后发生的是有一个for循环操纵位图图像,la:

bdst[x * 3 + y * dstStride + 2] = (byte)(alpha * bsrc[dx * 3 + L * srcStride + 2]);

(x& y是循环中的迭代器)

当然,我无法简单地将bdst设为字节数组,因为这没有意义。 According to this totally awesome article,Scan0是“它在固定数据阵列的内存中的地址。”

根据上述SO帖子判断,这在Java中是不可能的。确认/否认?

1 个答案:

答案 0 :(得分:1)

您无法直接指向Java中的内存。这显然是设计上的。

但是,您可以使用PixelGrabber类从Image获取像素数组。或者,如果您有BufferedImage,则可以直接使用Raster。这可以帮助您实现目标而无需直接访问内存。