import java.awt.geom.AffineTransform; // angle is in our system (clockwise, 0 is north) // rx, ry is rotation point in painted image space static BufferedImage drawRotatedImageOnImage(BufferedImage img, BufferedImage canvas, int x, int y, double angle, double rx, double ry) { Graphics2D g = createGraphics(canvas); g.setTransform(AffineTransform.getRotateInstance(angle*pi()/180, rx, ry)); g.drawImage(img, x, y, null); ret canvas; }