我正在尝试获取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();
}
我还想知道是否有更好的方法来实现特定矩形选择的放大,并使用放大部分替换原始图像。
答案 0 :(得分:0)
应注意,子图像的尺寸不应超过原始图像的宽度和高度。
例如,如果originalimage.width=600
和orignalimage.height=800
可以创建子图像,其大小应为subimage.horizentalorigin+subimage.width<=600
和subimage.veticalorigin+subimage.height<=800
。否则,将始终显示暗影。图像的角落。
subimage.horizentalorigin=x1
,subimage.verticalorigin=x2
,subimage.width=y1
,subimage.height=y2
。你做的其余计算因算法而异......