2012-02-03 3 views
1

은 내가 bufferd 이미지 즉 데 :java에서 bufferd-image를 회전하는 방법은 무엇입니까?

BufferedImage buffer = ImageIO.read(new File(file)); 

지금 내가 그것을 회전 할 ... 그래서 내가 어떻게 그것을 할 수 있습니다?

은 이전에 내가 이미지 포맷 즉 사용했다 :

Image image = ImageIO.read(new File(file)); 

및 사용하여 이미지를 회전 할 쉽게 수 :

AffineTransform at = new AffineTransform(); 
    at.rotate(0.5 * angle * Math.PI, width/2, height/2); 

을하지만 난 bufferd 이미지로 작업을 수행하는 방법에 가지고와 해달라고? 너 나 좀 도와 줄 수있어 ??

+0

의 Graphics2D OBJE에 사용 된 경우의 AffineTransform가 잘 작동합니다 ct가 BufferedImage에서 파생되었지만 이미지가 정사각형이 아닌 경우 올바른 회전 중심 및 클리핑을 선택하는 데주의해야합니다. –

답변

4

예 :도

BufferedImage buffer = ImageIO.read(new File(file)); 
AffineTransform tx = new AffineTransform(); 
//tx.scale(scalex, scaley); 
//tx.shear(shiftx, shifty); 
//tx.translate(x, y); 
tx.rotate(radians, buffer.getWidth()/2, buffer.getHeight()/2); 

AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_BILINEAR); 
buffer = op.filter(buffer, null); 

참조 :

+1

정사각형 이미지의 경우에만 올바르게 작동합니다. –

+0

하단의 두 링크는 ​​필요한 경우 다시 꼬는 방법을 보여줍니다. 이 질문은 아마도 중복으로 표시되어야합니다. – kaliatech

+0

내 대답을 링크에 추가 할 수 있습니다 : [affinetransform-truncates-image-what-do-i-wrong] (http://stackoverflow.com/questions/8719473/affinetransform-truncates-image-what-do-i- 잘못된/872# 8720123) –

관련 문제