Saber si una imagen tiene pÃxels transparentes

2064 vistas

Esta información es relativamente simple de obtener si trabajamos con una instancia de BufferedImage. Con ella, podemos "preguntarle" directamente a ColorModel. En caso contrario, tendremos que pasar por un PixelGrabber.

Veamos un método que permite recuperar esta información sea cual sea el tipo de imagen:



java
  1. public boolean alphaLayer(Image image){
  2.   ColorModel modelo = null;
  3.   if(image instanceof BufferedImage){
  4.       BufferedImage bi = (BufferedImage)image;
  5.       modelo = bi.getColorModel();
  6.   }else {
  7.     // tratamos la imagen pÃxel a pÃxel para recuperar un ColorModel
  8.       PixelGrabber pg = new PixelGrabber(image, 0, 0, 1, 1, false);
  9.       try{
  10.       // cortamos la imagen oÃxel a pÃxel
  11.         pg.grabPixels();
  12.       }catch (InterruptedException e) {
  13.         e.printStackTrace();
  14.       }
  15.       modelo = pg.getColorModel();
  16.   }
  17.   return modelo.hasAlpha();
  18. }