Java 如何使用drawImage()裁剪图像?

Java 如何使用drawImage()裁剪图像?,java,crop,drawimage,Java,Crop,Drawimage,我试图裁剪一张500x500的图像,使其中心只有300x300的矩形,如下所示: Original Image +-------------------+ +-------------------+ | 500 x 500 | | Crop Area | | | | +-----------+ | | |

我试图裁剪一张500x500的图像,使其中心只有300x300的矩形,如下所示:

   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;

我可能会更容易使用子映像,但那只是我。。。