放大BufferedImage的特定部分

时间:2012-04-01 18:36:31

标签: java graphics zoom bufferedimage

我正在尝试获取BufferedImage的子图像,然后使用此subImage替换原始BufferedImage,以根据用户指定的选择实现缩放功能。但是,当我将subImage重绘到原始图像时,子图像的底部没有显示。我不知道为什么。我想知道是否有人能发现任何明显的错误!?!

private void zoomImage(int x1, int x2, int y1, int y2){
    BufferedImage subImage = originalImage.getSubimage(x1, y1, x2-x1, y2-y1);
    Graphics2D graphics2D = (Graphics2D) originalImage.getGraphics();
    graphics2D.drawImage(subImage, 0, 0, 600, 400, 0,0, x2-x1,y2-y1, null);
    // clean up
    graphics2D.dispose();
}

我还想知道是否有更好的方法来实现特定矩形选择的放大,并使用放大部分替换原始图像。

1 个答案:

答案 0 :(得分:0)

应注意,子图像的尺寸不应超过原始图像的宽度和高度。 例如,如果originalimage.width=600orignalimage.height=800可以创建子图像,其大小应为subimage.horizentalorigin+subimage.width<=600subimage.veticalorigin+subimage.height<=800。否则,将始终显示暗影。图像的角落。

  • subimage.horizentalorigin=x1
  • subimage.verticalorigin=x2
  • subimage.width=y1
  • 特别是
  • subimage.height=y2

你做的其余计算因算法而异......