2014-12-23 6 views
1

나는과 같이, 단지 중앙에 최대 300x300 사각형을 위해 500x500 이미지를 자르려고 :어떻게 drawImage()를 사용하여 이미지를자를 수 있습니까?

Original Image    
+-------------------+  +-------------------+ 
|  500 x 500  |  |  Crop Area  | 
|     |  | +-----------+ | 
|     |  | | 300 x 300 | | 
|     |  | |   | | 
|     |  | |   | | 
|     |  | +-----------+ |  
|     |  |     | 
+-------------------+  +-------------------+ 

내가 Graphics.drawImage() with 8 int parameters 그것이 적절한 것 같다 이미지의 영역을 그릴 것입니다 있다고 볼 이미지의 잘린 부분 만 그립니다 만, image.getGraphics().drawImage(image, 0, 0, 500, 500, 100, 100, 400, 400, null);을 시도하면 올바르게 자르지 않았습니다.

drawImage에 내 이미지를자를 수있는 매개 변수는 무엇입니까?

+0

은 아마 서브 이미지를 사용하기 쉬운 것,하지만 그건 그냥 날의 ... – MadProgrammer

답변

2

처음 네 개의 int 매개 변수는 그리려는 이미지의 직사각형 섹션 (대상 이미지)을 나타내며 마지막 네 개는 그리는 이미지의 사각형 섹션 (원본 이미지)을 나타냅니다. 이러한 사각형의 크기가 같지 않으면 원본 이미지가 대상 이미지에 맞도록 다시 자릿수가 커집니다. drawImage(image, 0, 0, 500, 500, 100, 100, 400, 400, null)을 사용한 시도는 이미지의 올바른 영역을 얻은 후에 전체 이미지에 맞게 확장되기 때문에 효과가 없습니다. 크기를 변경하면서 이미지를 자르려면 자른 영역에 적합한 크기의 새 이미지를 만들어 이미지에 그려야합니다.

은 여기로 BufferedImage에 자른 이미지를 저장하는 예이다 :

//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;