Lecture image GIF pixel par pixel en java

zemfat Messages postés 2 Date d'inscription mercredi 7 décembre 2005 Statut Membre Dernière intervention 10 novembre 2009 - 4 nov. 2009 à 02:23
zemfat Messages postés 2 Date d'inscription mercredi 7 décembre 2005 Statut Membre Dernière intervention 10 novembre 2009 - 10 nov. 2009 à 05:03
Bonjour
j'ai une base de donnée qui contient un ensemble d'images de format GIF en niveau de gris;je veux lire les images pixel par pixel en java afin de récupérer la matrice de chaque image.J'espère que quelqu'un pourrez m'aider.merci d'avance

2 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
4 nov. 2009 à 11:28
Salut,

Tu peux soit parcourir l'image pixel par pixel dans une bonne boucle for/while après avoir récupéré les pixels :
public int[] getPixels(Image image){
  int [] pixels = null;
  PixelGrabber pg = null;
  if (image != null) {
    int w = image.getWidth(null);
    int h = image.getHeight(null);
    pixels = new int[w * h];
    pg = new PixelGrabber(image, 0, 0, w, h, pixels, 0, w);
    try {
      pg.grabPixels();
    } catch (Exception e) {
      System.out.println("Pixel Grabbing interrupted!");
      return null;
    }
  }
  return pixels;
}


soit utiliser la classe java.awt.image.RGBImageFilter et la combinée à la classe java.awt.image.FilteredImageSource
exemple d'utilisation ICI





------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
zemfat Messages postés 2 Date d'inscription mercredi 7 décembre 2005 Statut Membre Dernière intervention 10 novembre 2009
10 nov. 2009 à 05:03
merci beaucoup pour votre aide;
j'ai utilisé les indiquation montionné mais j'ai trouvé une matrice dont les valeurs de pixels est négatif j'espere que vous pouviez m'aider ,vous trouvez ci joint le code,merci

-------------------------------
public class MonImage1

{
MonImage1()
{}
public int[] getPixels(Image b){
int [] pixels = null;
PixelGrabber pg = null;

if (b != null) {
int w = b.getWidth(null);
int h = b.getHeight(null);
pixels = new int[w * h];

pg = new PixelGrabber(b, 0, 0, w, h, pixels, 0, w);
try {
pg.grabPixels();
}

catch (Exception e) {
System.out.println("Pixel Grabbing interrupted!");
return null;
}
}
return pixels;

}

public void image_final(int []pixel)
{
int [][] image = null;
image = new int[8435][320];
int dim=pixel.length;
int k=0;
while(k<dim){
for(int i=0 ; i<8435 ; i++){
for(int j=0; j<320; j++){
image[i][j]=pixel[k];
k++;
}
}}

for(int i=0 ; i<8435 ; i++)
{
System.out.println("");
for(int j=0 ; j<320 ; j++)
{
System.out.print(image[i][j]+ " ");}}
}

public static void main(String[] argv)throws IOException{
MonImage1 monCadre=new MonImage1();
File f = new File ("C:/Users/compaq/jdk/bin/glasses.gif");
BufferedImage b = ImageIO.read(f);
int []pixel = new int[2699200];
pixel=monCadre.getPixels(b);
monCadre.image_final(pixel);


}
}
Rejoignez-nous