Java Image Rotate rotate(Image img, double angle)

Here you can find the source of rotate(Image img, double angle)

Description

Rota una imagen.

License

Open Source License

Parameter

Parameter Description
img La imagen a rotar
angle El angulo en grados

Return

The rotated image

Declaration

public static Image rotate(Image img, double angle) 

Method Source Code


//package com.java2s;
//License from project: Open Source License 

import java.awt.*;

import java.awt.image.*;

import java.util.ArrayList;
import java.util.List;

import javax.swing.*;

public class Main {
    /**/*from   www  . j  av  a2  s. com*/
     * Rota una imagen.
     *
     * @param img La imagen a rotar
     * @param angle El angulo en grados
     * @return The rotated image
     */
    public static Image rotate(Image img, double angle) {
        double sin = Math.abs(Math.sin(Math.toRadians(angle))), cos = Math.abs(Math.cos(Math.toRadians(angle)));
        int w = img.getWidth(null);
        int h = img.getHeight(null);
        int neww = (int) Math.floor(w * cos + h * sin), newh = (int) Math.floor(h * cos + w * sin);
        BufferedImage bimg = toBufferedImage(getEmptyImage(neww, newh));
        Graphics2D g = bimg.createGraphics();
        g.translate((neww - w) / 2, (newh - h) / 2);
        g.rotate(Math.toRadians(angle), w / 2, h / 2);
        g.drawRenderedImage(toBufferedImage(img), null);
        g.dispose();
        return toImage(bimg);
    }

    /**
     * Rota las imagenes de una lista de imagenes
     *
     * @param list La lista de imagenes
     * @param angle El angulo de rotacion
     * @return La lista de imagenes rotadas
     */
    public static List<Image> rotate(List<Image> list, double angle) {
        List<Image> imagesList = new ArrayList<>();
        for (Image image : list) {
            imagesList.add(rotate(image, angle));
        }
        return imagesList;
    }

    /**
     * Obtiene el ancho de una Image
     */
    public static int getWidth(Image imagen) {
        int width = new ImageIcon(imagen).getIconWidth();
        return width;
    }

    /**
     * Obtiene el ancho de un IconImage
     */
    public static int getWidth(ImageIcon imagen) {
        return imagen.getIconWidth();
    }

    /**
     * Obtiene el alto de una Image
     */
    public static int getHeight(Image imagen) {
        int height = new ImageIcon(imagen).getIconHeight();
        return height;
    }

    /**
     * Obtiene el alto de un IconImage
     */
    public static int getHeight(ImageIcon imagen) {
        return imagen.getIconHeight();
    }

    /**
     * Convierte un objeto Image a un BufferedImage
     *
     * @param img El objeto Image a convertir
     * @return El BufferedImage obtenido
     */
    public static BufferedImage toBufferedImage(Image img) {
        if (img instanceof BufferedImage) {
            return (BufferedImage) img;
        }
        // Crea un buffered image con trasparencia
        BufferedImage bimage = new BufferedImage(img.getWidth(null), img.getHeight(null),
                BufferedImage.TYPE_INT_ARGB);
        // Dibuja la imagen en el buffered image
        Graphics2D bGr = bimage.createGraphics();
        bGr.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
        bGr.drawImage(img, 0, 0, null);
        bGr.dispose();
        // Retorna el buffered image
        return bimage;
    }

    /**
     * Crea una imagen vacia con transparencia
     *
     * @param width El ancho de la nueva imagen
     * @param height El alto de la nueva imagen
     * @return la nueva imagen
     */
    public static Image getEmptyImage(int width, int height) {
        BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
        return toImage(img);
    }

    /**
     * Convierte un BufferedImage a Image
     *
     * @param bimage El BufferedImage a convertir
     * @return El objeto Image obtenido
     */
    public static Image toImage(BufferedImage bimage) {
        // Casting para convertir de BufferedImage a Image
        Image img = (Image) bimage;
        return img;
    }
}

Related

  1. imageRotate(Image img, int angle)
  2. rotate(File sourceImage, String targetImageName, double degree)
  3. rotate(Image image, double angle)
  4. rotate(Image img, double angle)
  5. rotate(Image img, float radian)
  6. Rotate(Image src, int angel)
  7. rotateImage(final File imagePath, int numquadrants)