Problem mit dem Auslesen eines Bildes

Status
Nicht offen für weitere Antworten.

Kitkat

Mitglied
hallo zusammen,

ich habe folgendes problem:
ich habe ein JPG und möchte nun die farbinformationen aus diesem auslesen, um sie nach häufigkeiten auszuwerten. ich habe auch schon etwas programmiert, weiß aber nicht wo mein fehler liegt. zur probe hab ich ein einfarbiges bild erstellt, das die werte r=3, g=3, b=3 hat. jedoch zeigt mir eclipse bei der ausgabe folgendes an für jedes pixel: R=14 G=7 B=242


hier mal mein code:

Code:
public static void main(String[] args)
	{		
		//	Bild laden
		BufferedImage img = loadTheImage();
		int w = img.getWidth(), h = img.getHeight();
		
		System.out.println("width: " + w);
		System.out.println("height: " +  h);
		//System.out.println("image-type: " + img. getType());
		
		for(int x=0; x<w; x++)
		{
			for(int y=0; y<h; y++)
			{
				int argb = img.getRGB(x, y);              //liest den rgb-wert eines pixels aus
				//int alpha = (argb >> 24) & 0xff;          //zerlegt den argb-wert in alpha, r, g, b
				int red   = (argb >> 16) & 0xff; 
				int green = (argb >> 8)  & 0xff; 
				int blue  = (argb)       & 0xff;				
				System.out.println("Pixel: " + "x=" + x + " , y=" + y);
				System.out.println(/*"alpha=" + alpha + */ "R=" + red + " G=" + green + " B=" + blue);
				System.out.println();
			}
		}
	}
	
//_______________________________________________________________________________________________
	
	protected static BufferedImage loadTheImage()          //Funktion zum Laden eines Bildes
	{
		BufferedImage img = null;                                        //das Bild
		
		try 
		{
			String dateiname = new String("D:/thesis/einfarbig.jpg");
			FileInputStream in = new FileInputStream(dateiname);        //aus Stream laden
			JPEGImageDecoder decoder= JPEGCodec.createJPEGDecoder(in);    //der Decoder
			img = decoder.decodeAsBufferedImage();                        //laden
			in.close();
		}
		catch(Exception e)
		{
			System.out.print(e);
		}		
		
		return img; //geladenes Bild zurückgeben
	}
}

wo liegt das problem? wär sehr dankbar wenn ihr mir weiterhelfen könntet!
schönen sonntag,
lg katha
 
U

unicode

Gast
hi damit könnte es klappen:

Code:
void farbeErmitteln(BufferedImage img,int startX,int startY)
{
	
	for (int y = startY; y< img.height()(); y++) {
        for (int x = startX; x < img.width(); x++) {
        		   Color col = new Color(img.getRGB(x, y));
	               int roterAnteil=col.getRed();
	               int gruenerAnteil=col.getGreen();
	               int blauerAnteil=col.getBlue() ;
        	
	              
        		System.out.println(roterAnteil+"-"+gruenerAnteil+"-"+blauerAnteil);
        	}
        }
 

Kitkat

Mitglied
hi! vielen dank für die schnelle antwort. hab es eingebaut, jedoch hab ich nun im endeffekt die gleiche anzeige:

14-7-242

lg katha
 

Kitkat

Mitglied
mir ist gerade noch was aufgefallen, vielleicht könnte es ja da dran mit liegen. ich bin mir etwas unschlüssig:
wenn ich deine funktion einbaue, und in der main folgenden aufruf mache:
Code:
farbeErmitteln(img, 0, 0);

dann sagt er folgendes: Cannot make a static reference to the non-static method farbeErmitteln(BufferedImage, int, int) from the type main

was soll ich nun tun? wenn ich die funktion farbeErmitteln static mache, hab ich die ausgabe, die ich vorhin beschrieben habe...

lg katha
 

Chris_1980

Bekanntes Mitglied
Hy Kitkat, du kannst deine Funktion ruhig so lassen, bei mir funktioniert das einwandfrei. :wink:
Hast du das mal mit nem anderen testBild versucht?
Und hast du dir mal bei deinem die Pixel aus der Mitte angeguckt? Sind die richtig erkannt worden? Möglicherweise sind nur diie Ränder andersfarbig, weil Photoshop oder so da bissl weichgezeichnet hat. ???:L
 

Kitkat

Mitglied
hi!

hab grad nochmal gekuckt, bei mir gibt er für alle pixel R=14 G=7 B=242 an...
ich weiß einfach nicht woran es liegen könnte...

lg katha
 

Chris_1980

Bekanntes Mitglied
???:L

nimm mal das Bild:
test.jpg


und schreib mal was er dann ausgibt bei dir.
 

Chris_1980

Bekanntes Mitglied
Schon komisch irgendwie.
Poste doch mal dein Testbild, vieleicht kann man der Sache dann mal gemeinsam auf den Grund gehen.
 

Chris_1980

Bekanntes Mitglied
Oben unter dem Titel gibts n Link "Eigene Dateien". Da kannst du das hochladen und den Link dazu hier posten.
 

Kitkat

Mitglied
hab ich gesehen :)
aber ich habs grad rausgefunden....... oh mann. hatte des bild noch als CMYK abvegespeichert. nun hab ichs im photoshop in rgb konvertiert. und nun gehts...naja was für ein blöder fehler. danke für deine hilfe!

noch ne andere frage hätte ich zu dem thema:
wie kann man am besten die farben von TIF-bildern auswerten?
 

Chris_1980

Bekanntes Mitglied
So viel ich weiß kann Java standardmässig nicht mit TIF umgehen, hab also keinen Plan wie das hinzukriegen ist, sorry.
 

Chris_1980

Bekanntes Mitglied
Code:
protected static BufferedImage loadTheImage()          //Funktion zum Laden eines Bildes 
	{ 
		BufferedImage img = null;                                        //das Bild 

		try 
		{			
			img = ImageIO.read(new File("D:/test.gif")); // lädt Bilder des Types JPG, GIF, PNG

			
//			String dateiname = new String("D:/test.jpg"); 
//			FileInputStream in = new FileInputStream(dateiname);        //aus Stream laden 
//			JPEGImageDecoder decoder= JPEGCodec.createJPEGDecoder(in);    //der Decoder 
//			img = decoder.decodeAsBufferedImage();                        //laden 
//			in.close(); 
		} 
		catch(Exception e) 
		{ 
			System.out.print(e); 
		}       

		return img; //geladenes Bild zurückgeben 
	}

Wenn du das änderst kannst du des mit JPG, GIF und PNG machen.
Andere Sachen gehen bestimmt auch, aber halt nicht so ohne weiteres. Vieleicht hat jemand schonmal was zum konvertieren von tif u. bmp geschrieben. Also vorstellen könnt ichs mir zumindest.
 

Kitkat

Mitglied
guten morgen,

danke dir chris! werd ich gleich ändern.

lg katha

p.s. wenn jemand anderes ne idee hat wie ich das mit anderen dateiformaten machen kann - bin über jede nachricht dankbar!
 

Kitkat

Mitglied
ich nochmal:
folgende fragen hätte ich noch:
wenn ich nun ein bild lade, wo geb ich nun den dateipfad ein? in der neuen zeile die du eingef+gt hast oder in meinem teil? was genau macht die zeile von dir chris?
was genau sagt das alpha aus bei der angabe des farbwertes?
 

Chris_1980

Bekanntes Mitglied
Die neue Zeile lädt das Bild. Bei new File("") gibst du den Pfad zu dem Bild an. Deinen dadurch überflüssig gewordenen Code hab ich auskommentiert, der hat also keine Bedeutung mehr. Oh, ich seh grad ich hab die CodeTags vergessen -->*...edit*.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
1 Problem bei auslesen eines Result Sets Java Basics - Anfänger-Themen 4
S CSV auslesen UTF-8 Problem Java Basics - Anfänger-Themen 7
T Classpath Problem mit dem auslesen von Text-Dateien (Pfad) Java Basics - Anfänger-Themen 3
P Problem mit dem Auslesen einer Varible/Methode Java Basics - Anfänger-Themen 8
O Methode in andere Klasse verlegt, "auslesen" einer HTML Seite verschnellert - Problem. Java Basics - Anfänger-Themen 4
J Problem beim auslesen von Int Wert aus YML-Datei Java Basics - Anfänger-Themen 6
D Problem beim Auslesen aus File Java Basics - Anfänger-Themen 3
T Problem bei Daten auslesen Java Basics - Anfänger-Themen 8
D Problem beim auslesen von TextArea Java Basics - Anfänger-Themen 3
F Problem mit Auslesen mehrerer jComboBoxen Java Basics - Anfänger-Themen 6
M XML Elemente auslesen - Problem! Java Basics - Anfänger-Themen 5
G db daten auslesen, problem mit ClassCastException Java Basics - Anfänger-Themen 8
D Problem beim auslesen von txt datei. Java Basics - Anfänger-Themen 26
K mein() Methode – Argumente auslesen Problem Java Basics - Anfänger-Themen 6
M Wert auslesen - Problem Java Basics - Anfänger-Themen 5
G Header auslesen. Problem. Java Basics - Anfänger-Themen 40
K Problem beim Auslesen einer Datei Java Basics - Anfänger-Themen 6
K Verständnis Problem bei Server/Client Java Basics - Anfänger-Themen 2
I WildFily - unterschiedliche Libs im Projekt verursachen Problem Java Basics - Anfänger-Themen 11
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
L Taschenrechner Problem Java Basics - Anfänger-Themen 4
I Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade Java Basics - Anfänger-Themen 10
A ScheduledExecutorService problem Java Basics - Anfänger-Themen 7
marcelnedza Problem mit Weltzuweisung, JavaKarol Java Basics - Anfänger-Themen 13
XWing Methoden rückgabe Problem? Java Basics - Anfänger-Themen 6
M Erste Schritte Collatz Problem max int Java Basics - Anfänger-Themen 3
M Problem bei verschachtelter for-Schleife bei zweidimensionalen Arrays Java Basics - Anfänger-Themen 3
C GLOOP Problem beim Erstellen der Kamera Java Basics - Anfänger-Themen 9
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
frager2345 Problem mit Methode Java Basics - Anfänger-Themen 4
L Problem bei Rechnung mit Math.pow Java Basics - Anfänger-Themen 13
A Thread-Schreibe-Lese-Problem Java Basics - Anfänger-Themen 4
SUPERTJB return Problem Java Basics - Anfänger-Themen 3
sserio BigInteger Problem Java Basics - Anfänger-Themen 4
JordenJost Taschenrechner problem Java Basics - Anfänger-Themen 5
K Problem mit "Random" Java Basics - Anfänger-Themen 5
S Datei anlegen Problem! Groß- und Kleinschreibung wird nicht unterschieden Java Basics - Anfänger-Themen 4
sserio Problem beim Anzeigen Java Basics - Anfänger-Themen 5
xanxk Problem For-Schleife mit Charakter Java Basics - Anfänger-Themen 2
L Unbekanntes Problem mit 2d Array Java Basics - Anfänger-Themen 6
sserio Liste erstellt und ein Problem mit dem Index Java Basics - Anfänger-Themen 8
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
J Schleife Problem Java Basics - Anfänger-Themen 2
D Problem mit der Erkennung von \n Java Basics - Anfänger-Themen 2
milan123 das ist meine aufgabe ich hab das problem das bei mir Wenn ich die Richtung der Linien verändern will und drei davon sind richtig, verändere ich die 4 Java Basics - Anfänger-Themen 3
M Verständins Problem bei Aufgabe Java Basics - Anfänger-Themen 4
HeiTim Problem mit der Kommasetzung an der richtigen stelle Java Basics - Anfänger-Themen 59
Temsky34 Problem mit dem Code Java Basics - Anfänger-Themen 17
P Problem mit Calendar.getDisplayName() Java Basics - Anfänger-Themen 8
C Problem mit mehreren Methoden + Scanner Java Basics - Anfänger-Themen 5
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
M Problem mit Klassenverständnis und Button Java Basics - Anfänger-Themen 8
EchtKeineAhnungManchmal hallo habe ein Problem mit einer Datei -> (Zugriff verweigert) Java Basics - Anfänger-Themen 4
H Problem mit Verzweigungen Java Basics - Anfänger-Themen 6
H Problem mit Rückgabewert Java Basics - Anfänger-Themen 7
josfe1234 JAVA FX problem Java Basics - Anfänger-Themen 3
A Code Problem Java Basics - Anfänger-Themen 6
Henri Problem von Typen Java Basics - Anfänger-Themen 7
J Problem mit "ArrayIndexOutOfBoundsException" Java Basics - Anfänger-Themen 11
K jackson Mapping - Problem mit Zeitzonen Java Basics - Anfänger-Themen 10
B Threads Problem mit mehreren Threads Java Basics - Anfänger-Themen 38
I Output BigDecimal anstatt double / Problem beim Rechnen Java Basics - Anfänger-Themen 16
D Schleifen Problem Java Basics - Anfänger-Themen 2
H So viele Fehlermeldungen, dass ich nicht weiß wo das Problem ist. Java Basics - Anfänger-Themen 6
J JAVA-Problem blockiert MEDIATHEKVIEW Java Basics - Anfänger-Themen 13
T Problem mit Lehrzeichen und String bei einfacher Chiffre Java Basics - Anfänger-Themen 8
J extends Problem Java Basics - Anfänger-Themen 2
C Polymorphie-Problem Java Basics - Anfänger-Themen 3
Kalibru Problem bei Ausgabe von Objekt Java Basics - Anfänger-Themen 1
I Format Problem mit Wert - bekomme 0,10 anstatt 10,00 Java Basics - Anfänger-Themen 6
J Problem mit einer Methode die gewissen Inhalt einer Array löschen soll Java Basics - Anfänger-Themen 9
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
J Allgemeines Problem mit Klassen Java Basics - Anfänger-Themen 5
U Problem mit dem initialisieren meines Strings in einer Schleife Java Basics - Anfänger-Themen 5
amgadalghabra algorithmisches Problem Java Basics - Anfänger-Themen 19
J Traveling Salesman Problem [Arrays] Java Basics - Anfänger-Themen 9
R ArrayList Problem Java Basics - Anfänger-Themen 6
InfinityDE Problem mit Datenübergabe an Konstruktor Java Basics - Anfänger-Themen 7
C RegEx Problem Java Basics - Anfänger-Themen 4
J Anfänger TicTacToe, Problem bei Gewinnoption, sowohl Unentschieden Java Basics - Anfänger-Themen 8
E Taschenrechner GUI Problem mit Fehlerhandling Java Basics - Anfänger-Themen 6
M Input/Output Fallunterscheidung Problem Java Basics - Anfänger-Themen 17
P Problem beim Überschreiben einer vererbten Methode Java Basics - Anfänger-Themen 4
M Problem bei Ausgabe Java Basics - Anfänger-Themen 7
Splayfer Java Array Problem... Java Basics - Anfänger-Themen 2
G Problem bei der Ausgabe einer Main Claase Java Basics - Anfänger-Themen 7
F Problem mit KeyListener in kombination mit dem ActionListener Java Basics - Anfänger-Themen 4
G Subset sum problem mit Backtracking Java Basics - Anfänger-Themen 18
N Problem mit Scanner Java Basics - Anfänger-Themen 2
J Klassen Problem Java Basics - Anfänger-Themen 8
A Out.format problem. Java Basics - Anfänger-Themen 3
J Problem bei der Programmierung eines Tannenbaums Java Basics - Anfänger-Themen 9
A Array problem Java Basics - Anfänger-Themen 16
2 Taschenrechner mit GUI Problem bei der Berechnung Java Basics - Anfänger-Themen 8
W Remote Method Invocation RMI - Problem Java Basics - Anfänger-Themen 0
I Ich habe ein Problem Java Basics - Anfänger-Themen 3
A Problem bei returnen eines Wertes Java Basics - Anfänger-Themen 6
M Regex Erstellung Problem Java Basics - Anfänger-Themen 2
D Input/Output Problem bei der Benutzereingabe eines Befehls Java Basics - Anfänger-Themen 14
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben