farbwert ppm

Status
Nicht offen für weitere Antworten.

sousou

Bekanntes Mitglied
Hallo zusammen,


ich möchte für ein bild von Fomrat ppm die Farbwerte ermitteln. Also sprich wenn ein Bild dessen Farbwert 255 ist also 1 Byte dann ist ok ansonsten wenn der Farbwert > 255 dann möchte ich ein false zurück geben.

Frage ist also wie ermittle ich den Farbwert eines Bildes`?


Wie kann man denn also die Pixel auslesen ..blick da nicht so durch.

Hier mal ein ansatz:
Code:
private BufferedImage a = null;

             a = ImageIO.read( new File( filename ) );

Und nun? wie gehts da weiter? Irgendwie mit der Forschleife Pixel auslesen?

lg
 

Spin

Top Contributor
Moin ,

einfach die Weite und höhe des bildes holen.

Java:
public static void zeigePixel(BufferedImage bimg) {
   for (int w = 0; w < bimg.getWidth(); w++) {
      for (int h = 0; h < bimg.getHeight();h++) {
         System.out.print("X" +w "," + "Y" + h);
      }
  }
}

Zusätzlich:   Farbwert pro Pixel

             int rgb = bimg.getRGB(w, h);
            System.out.println("Pixel an Stelle X: " + w + ", Y: " +h + " hat Farbwert " + rgb);

grüße
 

sousou

Bekanntes Mitglied
Hallo spin,

da konnt sone blöde Fehlermeldung... find aber kein Fehler ...

Das ist die Klasse in der Ich den Algo habe:

Code:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package testprojekt3;

/**
 *
 * @author sousou
 */


import java.awt.image.BufferedImage;
import java.io.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;


public class PPM {

           public BufferedImage img = null;


       public void getPixel(  ) {

             String filename = "F:\\Users\\Jousef\\Documents\\galactic-center-fleck.ppm";

             try {
                     img = ImageIO.read(new File(filename));
                 }
                 catch (IOException ex)
                 {
                     Logger.getLogger(PPM.class.getName()).log(Level.SEVERE, null, ex);
                 
                 }


                for ( int w = 0; w < img.getWidth(); w++){

                    for ( int h = 0; h < img.getHeight(); h++){

                          int rgb = img.getRGB(w, h);
                          System.out.println("Pixel an Stelle X: " + w + ", Y: " +h + " hat Farbwert " + rgb);

                    }

                }


       }


       
}


Und in Main Wollt ich die FUnktion aufrufen.


Code:
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here

        PPM p = new PPM();
        p.getPixel();

    }

}


das ist die fehlermeldung:

Exception in thread "main" java.lang.NullPointerException
at testprojekt3.PPM.getPixel(PPM.java:42)
at testprojekt3.Main.main(Main.java:21)
Java Result: 1
ERSTELLEN ERFOLGREICH (Gesamtzeit: 0 Minuten 0 Sekunden)


Was stimmt denn nicht?
lg
 

Spin

Top Contributor
NullPointer Exception wirft er dir , wenn bsp ein Objekt null ist.

Und ich kann mir vorstellen dass dein bild nicht geladen wird. Das der Pfad eventuell falsch ist.

Pberprüfe es nochmal , oder schreib dir schnell ne funktion , wo du dein bild als backgroundgrafik lädst.

Wenn das klappt, ist dass nicht der Fehler, den ich jetzt vermute .

Java:
   public BufferedImage img = null;


Wo fütterst du denn dein BufferedImage in deinem Prog?

img = ImageIO.read(new File(filename));


Er hat hier immer noch kein Bild.
 
Zuletzt bearbeitet:

sousou

Bekanntes Mitglied
Der pfad ist zu 100% richtig, weil ich mit dem selben Pfad auch andere Daten von der Datei ausgelesen habe also den Header.


Wie meinst du denn das? also der hat da noch immer kein Bild das Bild ist wird doch übergeben...


img wird das bild zugewiesen.

Wenn das Flasch ist, wie würde es denn richtig aussehen?

Code:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package testprojekt3;

/**
 *
 * @author Jousef
 */


import java.awt.image.BufferedImage;
import java.io.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;


public class PPM {


       public void getPixel(  ) {

        BufferedImage img = null;
           
        try {
               img = ImageIO.read(new File("F:\\Users\\Jousef\\Documents\\galactic-center-fleck.ppm"));
            }
            catch (IOException ex)
            {
            Logger.getLogger(PPM.class.getName()).log(Level.SEVERE, null, ex);
            }

                for ( int w = 0; w < img.getWidth(); w++){

                    for ( int h = 0; h < img.getHeight(); h++){

                          int rgb = img.getRGB(w, h);
                          System.out.println("Pixel an Stelle X: " + w + ", Y: " +h + " hat Farbwert " + rgb);

                    }

                }


       }
    
}
 

Spin

Top Contributor
Java:
Pixel an Stelle X: 155, Y: 263 hat Farbwert -8218985
Pixel an Stelle X: 155, Y: 264 hat Farbwert -8811122
Pixel an Stelle X: 155, Y: 265 hat Farbwert -9271927
Pixel an Stelle X: 155, Y: 266 hat Farbwert -9403513
Pixel an Stelle X: 155, Y: 267 hat Farbwert -9600892
Pixel an Stelle X: 155, Y: 268 hat Farbwert -9732478
Pixel an Stelle X: 155, Y: 269 hat Farbwert -9929857

Bei mir gehts .

Also ich nutze jpg Dateien.

Ich denke dein Problem ist die ppm . (parts per million)
Ich weiß nicht ob BufferedImage dass verwenden kann .

Also jpg und png , kein Problem.

Sonst versuch mal eine andere einlese Methode.
grüße

Java:
public void getPixel() {

		String filename = "background.jpg";

		try {
			img = ImageIO.read(new File(filename));
		} catch (IOException ex) {
			Logger.getLogger(Pics.class.getName()).log(Level.SEVERE, null, ex);

		}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Farbwert bekommen Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben