BufferedImage像素Vs Graphics.drawImage

时间:2014-01-05 18:56:11

标签: java image graphics pixels

使用以下方法制作缓冲图像和绘制像素之间有什么区别:

private BufferedImage img;
private int[] pixels;

pixels = ((DataBufferInt) img.getRaster().getDataBuffer());

只需使用图像

img

变量并使用img的图形来执行:

img.getGraphics().drawImage(/*image*/, x, y, observer);

编辑:

这是游戏开发!!

2 个答案:

答案 0 :(得分:5)

通过Graphics方法的优势:

  • 使用drawImage
  • 等现成的高级操作通常更简单
  • 您可能会受益于某些平台上的硬件加速/优化
  • 它相对独立基础图像格式

下降到像素缓冲级别的优点:

  • 它可用于非常专门用途,例如从某种公式/计算中生成每个像素(例如,我使用此技术生成自定义颜色渐变)
  • 单个像素操作可以略微(但drawImage等批量操作可能会更慢,因为您没有得到硬件加速度)

如果它只是屏幕上的常规游戏渲染,我会说Graphics路线可能是最好的。如果您正在做一些像现场图像生成这样的事情,那么像素缓冲路径可能值得探索。

答案 1 :(得分:4)

  • 使用getGraphics()提供了一种可靠的方法来绘制图像,无论其底层结构如何。
  • 请注意,在演示时不应该通过链接来执行此操作:img.getGraphics().drawImage(/*image*/, x, y, observer);因为这样一旦完成后就不会处理Graphics对象,从而有可能耗尽资源。
  • 直接操作光栅的位可能是更快改变的方法,但我相信你这样做取决于你正在使用的BufferedImage的类型。