Here you can find the source of rotate(Image img, double angle)
Parameter | Description |
---|---|
img | La imagen a rotar |
angle | El angulo en grados |
public static Image rotate(Image img, double angle)
//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; } }