Rendre une image en niveau de gris

Aller en bas

Rendre une image en niveau de gris Empty Rendre une image en niveau de gris

Message  Gus le Ven 8 Juil - 21:15

Il existe de nombreuses manières en Java de rendre une image en niveau de gris, faisant appel ou non à l'API JAI. Voici un lien qui parle du sujet sans faire appel à JAI : http://blog.codebeach.com/2008/03/convert-color-image-to-gray-scale-image.html

Avec l'API JAI, il est possible d'obtenir ce résultat avec le traitement "bandcombine" mais j'ai préféré opter pour une solution proche de mon entité gus.image.convert.tobufferedimage qui transforme les image en BufferedImage standardisé, sauf que le type d'image choisi est cette fois : TYPE_BYTE_GRAY

Image originale :
Rendre une image en niveau de gris Mononoke_original

gus.image.transform.rendered.color.grayscale
Code:
package gus05.entity.gus.image.transform.rendered.color.grayscale;

import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.awt.image.RenderedImage;
import gus05.framework.core.Entity;
import gus05.framework.features.Transform;

public class ImageColorGrayScale implements Entity, Transform {

    public String getName()            {return "gus.image.transform.rendered.color.grayscale";}
    public String getCreationDate()      {return "2011.07.06";}

    public Object transform(Object obj) throws Exception
    {
       if(obj instanceof Image)
       {
          Image image = (Image) obj;
          BufferedImage buffImage = new BufferedImage(image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_BYTE_GRAY); 
           Graphics2D g = buffImage.createGraphics(); 
           g.drawImage(image,0,0,null);
           g.dispose();
           return buffImage;
       }
       if(obj instanceof RenderedImage)
       {
          RenderedImage image = (RenderedImage) obj;
          BufferedImage buffImage = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_BYTE_GRAY); 
           Graphics2D g = buffImage.createGraphics(); 
           g.drawRenderedImage(image,AffineTransform.getTranslateInstance(0,0));
           g.dispose();
           return buffImage;
       }
       throw new Exception("Invalid data type: "+obj.getClass().getName());
    }
}
Rendre une image en niveau de gris Mononoke_grayscale
Gus
Gus
Admin

Messages : 249
Date d'inscription : 01/09/2009

Voir le profil de l'utilisateur http://www.gus05.com

Revenir en haut Aller en bas

Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum