Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ch.claude_martin.foo;
- import java.awt.Graphics2D;
- import java.awt.image.BufferedImage;
- import java.io.File;
- import java.io.IOException;
- import javax.imageio.ImageIO;
- public class SomeClass {
- public static void main(String[] args) throws IOException {
- var input = "C:/picture.jpg";
- var output = "C:/rotated_picture.jpg";
- var img = ImageIO.read(new File(input));
- var rotated = rotateBufferedImage(img, -90);
- ImageIO.write(rotated, "jpg", new File(output));
- }
- /**
- * Rotates an image. Note that an angle of -90 is equal to 270.
- *
- * @param img The image to be rotated
- * @param angle The angle in degrees (must be a multiple of 90°).
- * @return The rotated image, or the original image, if the effective angle is
- * 0°.
- */
- public static BufferedImage rotateBufferedImage(BufferedImage img, int angle) {
- if (angle < 0) {
- angle = 360 + (angle % 360);
- }
- if ((angle %= 360) == 0) {
- return img;
- }
- final boolean r180 = angle == 180;
- if (angle != 90 && !r180 && angle != 270)
- throw new IllegalArgumentException("Invalid angle.");
- final int w = r180 ? img.getWidth() : img.getHeight();
- final int h = r180 ? img.getHeight() : img.getWidth();
- final int type = img.getType() == BufferedImage.TYPE_CUSTOM ? BufferedImage.TYPE_INT_ARGB : img.getType();
- final BufferedImage rotated = new BufferedImage(w, h, type);
- final Graphics2D graphic = rotated.createGraphics();
- graphic.rotate(Math.toRadians(angle), w / 2d, h / 2d);
- final int offset = r180 ? 0 : (w - h) / 2;
- graphic.drawImage(img, null, offset, -offset);
- graphic.dispose();
- return rotated;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement