如何在Java中快速初始化BufferedImage?

时间:2011-02-08 08:08:00

标签: java optimization bufferedimage

我有以下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中?

或者也许可以直接使用传递的数据初始化结果图像?

1 个答案:

答案 0 :(得分:6)

好吧,要快速复制数组,您可以使用System.arraycopy

System.arraycopy(data, 0, rdata, 0, height * width);

我不知道如何开始初始化BufferedImage,我很害怕。

你试过了吗?

res.getRaster().setDataElements(0, 0, width, height, data);