Overlay die 2.

Status
Nicht offen für weitere Antworten.

Kaladial

Bekanntes Mitglied
hi

also ich bin immer noch bei meinem overlay-problem...

habe bisher folgendes hinbekommen

Ausgangs-Bild:
image80496.JPG


wenn ich nun folgendes mache:
Code:
			BufferedImage img = new BufferedImage(breite, hoehe, BufferedImage.TYPE_INT_ARGB); 
			int k=0;
			for(int br=0; br<breite; br++){
				for(int h=0; h<hoehe; h++){
					k=h+br;
					if(bild[k]==10){
						int rot = new Color(255, 0, 0).getRGB(); 
	                    img.setRGB( br, h, rot ); 
					}else{
						if(bild[k]==20){
							int blau = new Color(0, 0, 255).getRGB(); 
		                    img.setRGB( br, h, blau ); 
						}else{
							if(bild[k]==30){
								int gruen = new Color(0, 255, 0).getRGB(); 
			                    img.setRGB( br, h, gruen ); 
							}else{
								if(bild[k]==40){
									int gelb = new Color(255, 255, 0).getRGB(); 
				                    img.setRGB( br, h, gelb ); 
								}else{
									if(bild[k]==50){
										int magenta = new Color(255, 0, 255).getRGB(); 
					                    img.setRGB( br, h, magenta ); 
									}else{
										if(bild[k]==60){
											int orange = new Color(255, 170, 0).getRGB(); 
						                    img.setRGB( br, h, orange ); 
										}else{
											int andere = new Color(0.0f, 0.0f, 0.0f, 0.0f).getRGB();
											img.setRGB( br, h, andere );

										}
									}
								}
							}
						}
					}
				}
			}

kommt das bei raus:
image80498.JPG


nun das ist ja etwas seltsam da die bunten striche komplett über das bild gehn...
also hab ich mir gedacht ich versuch mal das bild wieder als grauwerte anzuzeigen
und nun kommt das bei raus:

image80495.JPG


das ist sehr unbefriedigend da ich ja eigentlich dachte das in meinem feld die richtigen grauwerte stehn, das sieht aber irgendwie net so aus... ahja das orginal bild zeig ich so an:

Code:
BufferedImage img = new BufferedImage(breite, hoehe, BufferedImage.TYPE_BYTE_GRAY); 
img.getRaster().setDataElements(0, 0, breite, hoehe, bild);

ja nu bin ich etwas überfragt ... kann mir viellicht wer weiter helfen?

thx Kala
 
S

SlaterB

Gast
der obige Code scheint auf ein neues Bild zu malen,
wo ist denn da der Zusammenhang zum Originalbild?

im unteren Code ist das Originalbild 'bild'?
mehr Infos hast du nicht dazu? poste doch mal ein vollständiges Programm zum Ausprobieren,
ne main-Operation + Bild von Festplatte laden können doch nicht mehr als 20 Zeilen sein

-----------

was soll überhaupt passieren, warum so ein elendig seltsamer Code im ersten Block?
male doch erstmal EINE Linie mit EINER Farbe
 

Kaladial

Bekanntes Mitglied
hmmm mein programm hat mittlerweile über 30 000 zeilen quellcode da kann ich das net einfach so raus ziehn

also nochmal kurze erklärung:

ich hab nen label1: auf dem lad ich bild1 (orginalbild = obere bild)
nun leg ich auf dieses label noch ein label = label2

auf label 2 lege ich das bild welches ich durch den quellcode den ich gepostet hab erzeuge...

bild[k] = Byte-Array in dem die Pixelfarbwerte in Graustufen stehn für das komplette bild

hoehe und breite = entsprechend der namen...

ahja bild3 entstand durch den code:
Code:
			for(int br=0; br<breite; br++){
				for(int h=0; h<hoehe; h++){
					k=h+br;
					if(bild[k]==50){
						andere = new Color((128), (128), (128)).getRGB();
					}else{
						andere = new Color((128+bild[k]), (128+bild[k]), (128+bild[k])).getRGB();
										}
					img.setRGB( br, h, andere );
				}
			}

so ich denke das sollte als info eigentlich ausreichen ... wie gesagt es ist schwer da nen lauffähiges rausgelöstet programm zu machen...
 

Wildcard

Top Contributor
Geh mal weg von der konkreten Methodik und beantworte folgende Frage:
Welches Ergebnis möchtest du erreichen?
 

Kaladial

Bekanntes Mitglied
also ich möchte folgendes:

bild2 aber es soll doch eher auf die richtigen umrahmungen haben...

also z.b. auf bild 1 sieht man ja das telefon und da ist rechts das gehäuse ja fast schwarz zu sehn ... nun möchte ich wenn ich diese farbe angeb ein durchsichtiges bild angezeigt wird aber genau an der stelle wo das schwarz zu sehen ist will ich nun das es rot wird..

also im code:

bild:

000000011110000
000000111110000
000000111110000
000001111100000

0 = restliche farben
1= das schwarz was die rückseite des telefons ist und das will ich rot anzeigen
 

Kaladial

Bekanntes Mitglied
image80510.JPG


ich hab das jetzt einfach mal mit paint eingezeichnet

ich bin jetzt auch davon ausgegangen das das schwarz der hülle nur eine farbe hat... aber ignoriert das einfach mal
 
S

SlaterB

Gast
ich weiß ja nicht, ob du jemanden überzeugen kannst,
sich mit Zahlenreihen wie 000000111110000 zu beschäftigen, was immer die auch bedeuten,

wenn dein Bild von der WebCam kommt, versuche das als Jpeg oder sonstwie zu speichern,
schon ist dein gesamtes 30.000 Zeilen-Programm nicht mehr von Belang
und du kannst ganz simpel mit einer neuen Mini-Testklasse anfangen

verzichte auch auf irgendwelche GUIs und wilde Labels die sich überlagern (!?!?...),
öffne das Bild, ändere Werte, speichere das Bild und schaue es dir mit Paint an,
das wäre ein überschaubarer Anfang
 

Kaladial

Bekanntes Mitglied
SlaterB: sorry wenn du nicht lesen kannst hör einfach auf zu antworten bringt ja eh nix deine antwort hilft auch keinem weiter ...

das ist ne sehr vereinfachte darstellung der werte in dem bildarray...

0 sind werte die ich transparent anzeigen will und 1 sind werte die ich rot einzeigen will
 

Kaladial

Bekanntes Mitglied
Wildcard: ja das ist richtig

bestimmte farben sollen transparent werden und andere farben sollen bestimmte farben annehmen (rot grün blau usw)...

das bild ist aber ein graustufenbild und anhand verschiedener farben in diesem graustufenbild will ich nun diese farben anzeigen
 

Kaladial

Bekanntes Mitglied
1.) BufferedImage img = new BufferedImage(breite, hoehe, BufferedImage.TYPE_INT_ARGB);

2.) BufferedImage img = new BufferedImage(breite, hoehe, BufferedImage.TYPE_INT_GRAY);

also was mich iritiert ist halt wenn ich das label2 mit einem bild versehen will und 2.) benutze kommt ein richtiges bild raus

wenn ich aber 1.) benutze und die farben über
andere = new Color((128+bild[k]), (128+bild[k]), (128+bild[k])).getRGB();
img.setRGB( br, h, andere );

erstelle kommt sowas wie bild 3 aus dem 1. post raus
eigentlich müsste doch das selbe bild wie bild 1 raus kommen
ich setzte ja auch nur pixelpunkte und weise denen bestimmte farbwerte zu
 

Kaladial

Bekanntes Mitglied
Code:
BufferedImage img = new BufferedImage(breite, hoehe, BufferedImage.TYPE_BYTE_GRAY); 
			img.getRaster().setDataElements(0, 0, breite, hoehe, bild);

^^ ok


Code:
BufferedImage img = new BufferedImage(breite, hoehe, BufferedImage.TYPE_INT_ARGB); 
for(int br=0; br<breite; br++){ 
            for(int h=0; h<hoehe; h++){ 
andere = new Color((128+bild[k]), (128+bild[k]), (128+bild[k])).getRGB(); 
img.setRGB( br, h, andere ); 
  }
}

^^ nicht ok
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben