Zum 2: GDLib - setpixel - colorallocatealpha

  • Themenstarter Themenstarter Ramix
  • Beginndatum Beginndatum
R

Ramix

Hallo Zusammen

Ich habe nochmal ein GDLib Problem. Es geht um das lesen einer FarbID. Wenn eine bestimmte Farbe vorkommt, soll das Pixel anders eingefärbt werden.
Das aussuchen der betroffenen Pixel klappt super. Das einfärben wiederum nicht. HIER hatte ich schon ein ähnliches Problem.

Aber jetzt beim 2. Mal kann ich mir nicht vorstellen, das einfärben nur so mühsam über imagecopy() möglich ist. Ich frage mich für was es imagesetpixel() überhaupt gibt!?

Hier mal das Script:
PHP:
class zweifarben{
	public function __construct(){
		$hallo = $this->gradient();
		$savedir = "5Bilder1.gif";		
		imagegif($hallo,$savedir,100);	
	}
	
	public function gradient(){
		$img = 'Bilder1.gif';
		list($x,$y) = getimagesize($img);
		$img = imagecreatefromgif($img);
		
		$test = "000000";
		list($r, $g, $b) = sscanf($test, "%2x%2x%2x");
		$test = array ($r, $g, $b);
		print_r($test);

		$color2 = imagecolorat($img,0,0);
		$index = imagecolorsforindex($img,$color2);
		$farbcode = $index["red"] . $index["green"] . $index["blue"];
		
		for($a=0;$a<$y;$a++){
			for($i=0;$i<$x;$i++){	
				$color = imagecolorat($img,$i,$a);
				$index = imagecolorsforindex($img,$color);
				$farbcode2 = $index["red"] . $index["green"] . $index["blue"];
				echo $farbcode2; 
				if($farbcode==$farbcode2){
					$color = imagecolorallocatealpha($img, $test[0],$test[1],$test[2],127);
					imagesetpixel($img,$i,$a,$color);
				}
      			echo " where " . $a ." and ". $i;
      			echo "<br />";
			}
			
		}
		return $img;
	}
}
$abc = new zweifarben();
Im Anhang ist auch noch das verwendete Bild. Damit der Unterschied bei auch funktioniert (falls es jemand versuchen will).

Danke für Antworten
Gruss Binz
 

Anhänge

  • Bilder1.jpg
    Bilder1.jpg
    47,3 KB · Aufrufe: 17
[phpf]imagesetpixel[/phpf] ist genau dafür da, wie es die Funktion sagt:
Es zeichnet einen Pixel an der Koordinate einer Bildressource mit der angegebenen Farbe (bestimmt mit [phpf]imagecolorallocate[/phpf]). Es fäbrt nicht ein.

Für mehr reichts heute nicht mehr, weil ich jetzt erstmal schlafen gehe. ;)
 
Der Schlaf hat gut getan! :)

Ein Pixel ist ja ne schöne Einheit:
Pixel, Bildpunkt, Bildzelle oder Bildelement (selten Pel) bezeichnet sowohl die kleinste Einheit einer digitalen Rastergrafik als auch deren Darstellung auf einem Bildschirm mit Rasteransteuerung. „Pixel“ (Genitiv: des Pixels; Plural: die Pixel) ist ein Kunstwort aus der Abkürzung der englischen Worte Picture (umgangssprachlich verkürzt „Pix“) und Element. Es wird oft mit px abgekürzt.

Wenn man die kleinste Einheit "zeichnet", passiert doch das gleiche wie wenn man ein Pixel übermalt.
Gibt setpixel() eine Art mischwert aus der vorhanden und der angegebenen Farbe zurück...?

Gruss
 
Zurück