Java 如何使用drawImage()裁剪图像?
我试图裁剪一张500x500的图像,使其中心只有300x300的矩形,如下所示:Java 如何使用drawImage()裁剪图像?,java,crop,drawimage,Java,Crop,Drawimage,我试图裁剪一张500x500的图像,使其中心只有300x300的矩形,如下所示: Original Image +-------------------+ +-------------------+ | 500 x 500 | | Crop Area | | | | +-----------+ | | |
Original Image
+-------------------+ +-------------------+
| 500 x 500 | | Crop Area |
| | | +-----------+ |
| | | | 300 x 300 | |
| | | | | |
| | | | | |
| | | +-----------+ |
| | | |
+-------------------+ +-------------------+
我看到这表示它将绘制图像的一个区域,这似乎只适合于绘制图像的裁剪区域,但当我尝试image.getGraphics().drawImage(image,0,0,500,500,100,100,400,400,null)时代码>它没有正确裁剪图像
我应该给drawImage
什么参数来裁剪我的图像?前四个int参数表示要绘制的图像的矩形部分(目标图像),后四个表示要绘制的图像的矩形部分(源图像)。如果这些矩形大小不同,则源图像将重新缩放(增大或缩小)以适合目标图像。您尝试使用drawImage(image,0,0,500,500,100,100,400,400,null)
时效果不太好,因为在获得图像的正确区域后,您会将其放大以适合整个图像。因为要裁剪图像--更改其尺寸--必须创建一个与裁剪区域大小合适的新图像,并在该图像上绘制
下面是一个将裁剪后的图像存储在BuffereImage中的示例:
//enter the appropriate type of image for TYPE_FOO
BufferedImage cropped = new BufferedImage(300, 300, BufferedImage.TYPE_FOO);
cropped.getGraphics().drawImage(image,
0, 0, 300, 300, //draw onto the entire 300x300 destination image
100, 100, 400, 400, //draw the section of the image between (100, 100) and (400, 400)
null);
image = cropped;
我可能会更容易使用子映像,但那只是我。。。