我有以下Java代码:
public static BufferedImage createImage(byte[] data, int width, int height)
{
BufferedImage res = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY);
byte[] rdata = ((DataBufferByte)res.getRaster().getDataBuffer()).getData();
for (int y = 0; y < height; y++) {
int yi = y * width;
for (int x = 0; x < width; x++) {
rdata[yi] = data[yi];
yi++;
}
}
return res;
}
有更快的方法吗?
在C ++中,我会使用memcpy,但是在Java中?
或者也许可以直接使用传递的数据初始化结果图像?
答案 0 :(得分:6)
好吧,要快速复制数组,您可以使用System.arraycopy
:
System.arraycopy(data, 0, rdata, 0, height * width);
我不知道如何开始初始化BufferedImage
,我很害怕。
你试过了吗?
res.getRaster().setDataElements(0, 0, width, height, data);