2012-02-03 7 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-画像でそれを行う方法NOEいけない??手伝って頂けますか??

+0

Graphics2Dのオブジェに使用した場合の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

下の2つのリンクは、必要に応じて再センタリングする方法を示しています。この質問は重複としてマークされているはずです。 – kaliatech

+0

あなたのリンクに私の答えを加えることができます:[affinetransform-truncates-image-what-do-i-wrong](http://stackoverflow.com/questions/8719473/affinetransform-truncates-image-what-do-i-間違った/ 8720123#8720123) –

関連する問題