public BufferedImage rotateImage(BufferedImage rotateImage) { AffineTransformOp op = null; try { AffineTransform tx = new AffineTransform(); //Rotate 90ยบ tx.rotate(Math.toRadians(90), rotateImage.getWidth() / 2.0, rotateImage.getHeight() / 2.0); AffineTransform translationTransform; translationTransform = findTranslation(tx, rotateImage); tx.preConcatenate(translationTransform); op = new AffineTransformOp(tx, AffineTransformOp.TYPE_BILINEAR); } catch (Exception e) { //Do something here } return op.filter(rotateImage, null); }
The function that finds the Translation:
private AffineTransform findTranslation(AffineTransform at, BufferedImage bi) { Point2D p2din, p2dout; p2din = new Point2D.Double(0.0, 0.0); p2dout = at.transform(p2din, null); double ytrans = p2dout.getY(); p2din = new Point2D.Double(0, bi.getHeight()); p2dout = at.transform(p2din, null); double xtrans = p2dout.getX(); AffineTransform tat = new AffineTransform(); tat.translate(-xtrans, -ytrans); return tat; }
And finally ... import this:
import java.awt.geom.AffineTransform; import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; import java.awt.image.AffineTransformOp; import java.awt.image.BufferedImage;
All done :)
No comments:
Post a Comment