lunes, 2 de septiembre de 2013

Java: convertir BufferedImage/Image/ImageIcon/Icon. Procesamiento digital de imágenes II.

Hoy os voy a mostrar una clase que contiene varios métodos para transformar objetos de tipo BufferedImage, Image, ImageIcon e Icon entre ellos. Sin más comentarios, os dejo el código.
import java.awt.Graphics2D;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Image;
import java.awt.image.BufferedImage;
import javax.swing.Icon;
import javax.swing.ImageIcon;

/**
 *
 * @author Luis Marcos
 */
public class ImageProcessing_TransformFormatImages{     

    public Image bufferedImageToImage(BufferedImage bufferImage){
        Image imgReturn = (Image)bufferImage;
        return imgReturn;
    }

    public ImageIcon bufferedImageToImageIcon(BufferedImage bufferImage){
        ImageIcon imgIconReturn = new ImageIcon(bufferImage);
        return imgIconReturn;
    }


    public Icon bufferedImageToIcon(BufferedImage bufferImage){
        ImageIcon imgIcon=new ImageIcon(bufferImage);
        Icon iconReturn = (Icon)(imgIcon);
        return iconReturn;
    }

     
 
    public BufferedImage iconToBufferedImage(Icon icon){
      BufferedImage bufferImage=(BufferedImage)this.iconToImage(icon);
      return bufferImage;
    }
    
      /**
      * Converts a Icon in a Image https://groups.google.com/forum/#!topic/comp.lang.java.programmer/OI_IdebPL68
      * @param icon Icon is going to be transformed
      * @return returns an Image from a Icon
      */
    public Image iconToImage(Icon icon) {
          if (icon instanceof ImageIcon) {
              return ((ImageIcon)icon).getImage();
          } else {
              int w = icon.getIconWidth();
              int h = icon.getIconHeight();
              GraphicsEnvironment ge = 
                GraphicsEnvironment.getLocalGraphicsEnvironment();
              GraphicsDevice gd = ge.getDefaultScreenDevice();
              GraphicsConfiguration gc = gd.getDefaultConfiguration();
              BufferedImage image = gc.createCompatibleImage(w, h);
              Graphics2D g = image.createGraphics();
              icon.paintIcon(null, g, 0, 0);
              g.dispose();
              return image;
          }
      }
    
  
    public ImageIcon iconToImageIcon(Icon icon){
        ImageIcon imageIconRetur=new ImageIcon(this.iconToImage(icon));
        return imageIconRetur;
    }
    
    public BufferedImage imageToBufferedImage(Image image){
        BufferedImage bufferReturn=(BufferedImage)image;
        return bufferReturn;
    }
    
    public ImageIcon imageToImageIcon(Image image){
        ImageIcon imageIconReturn=new ImageIcon(image);
        return imageIconReturn;
    }

    public Icon imageToIcon(Image image){
        ImageIcon imgIcon=new ImageIcon(image);
        Icon iconReturn=(Icon)imgIcon;
        return iconReturn;
    }
    
    public BufferedImage imageIconToBufferedImage(ImageIcon imageIcon){
        BufferedImage bufferReturn=(BufferedImage)((Image)imageIcon.getImage());
        return bufferReturn;
    }
    
    public Image imageIconToImage(ImageIcon imageIcon){
        Image imgReturn=(Image)imageIcon.getImage();
        return imgReturn;
    }
    
    public Icon imageIconToIcon(ImageIcon imageIcon){
        Icon iconReturn=(Icon)imageIcon;
        return iconReturn;
    }
}

Si alguna función falla (en principio creo que no), podéis indicarlo en los comentarios. ¡Saludos!

5 comentarios:

  1. Muchas gracias me fue muy útil la conversión de ImageIcon a Image

    ResponderEliminar
  2. Se te agradece tu Aportacion =D

    ResponderEliminar
  3. Muchas Gracias por compartirlo, en verdad me ha ayudado muchísimo.
    Saludos y Bendiciones.

    ResponderEliminar
  4. no funciona public Image bufferedImageToImage(BufferedImage bufferImage){
    Image imgReturn = (Image)bufferImage;
    return imgReturn;
    }

    ResponderEliminar
  5. no funciona public Image bufferedImageToImage(BufferedImage bufferImage){
    Image imgReturn = (Image)bufferImage;
    return imgReturn;
    }

    ResponderEliminar