Bild dunkler macheabdunkeln. (PHP Version 4)

ahykes

Erfahrenes Mitglied
Hallo Jungs,

ich habe ein schwarz/weiss Bild und möchte das Bild etwas abdunkeln, damit klar wird, dass es nicht anwählbar ist. Ich möchte quasi die Helligkeit runterschrauben. Leider bin ich an die PHP Version 4 gebunden und kann nicht auf die IMAGE-Funktionen von PHP 5 zurückgreifen.

Ich hätte auch schon eine Idee wie man das machen könnte. Könnte man nicht einfach hingehen und jeden zweiten Pixel des Bildes SCHWARZ malen? Dadurch würde das Bild auch dunkler werden. Nur wie kann man das machen?
 
Sollte kein Problem sein:

Die Funktion ImageSetPixel() zeichnet ein Pixel an der Koordinate x / y.
Dabei ist die Koordinate 0, 0 die linke obere Ecke des Bildes.


Ist in PHP 3, 4 und 5 verfügbar.
 
Habe meinen Ansatz jetzt mal verfolgt und folgendes rausbekommen :
PHP:
<?
	$im = '../person/endversions/thumbs/alex.jpg';
	$x = 0;
	$y = 0;
	$size = 0;
	$src = imagecreatefromjpeg($im);
	$width = imagesx($src);
	$heigth = imagesy($src);
	$pixel = imagecreate(1, 1);
	$size = $width * $heigth;
	echo $size;

	for($i=0; $i<=$size ; $i++)
	{
		$x = $x + 2;
		if ($i==$width){$y++;}
		imagecopyresized($src,$pixel,$x,$y,0,0,1,1,1,1);
		imagejpeg($src, '../images/gross_pixel.jpg', 100);
	}

	imagecopyresized($thumb,$src,0,0,0,0,50,50,50,50);
	imagejpeg($thumb, '../images/gross_pixel.jpg', 100);
	imagedestroy($thumb);
?>
Leider passiert da nichts...bzw. der Browser arbeitet sich tod. Haste eine Idee woran das liegen könnte?
 
ahykes hat gesagt.:
Habe meinen Ansatz jetzt mal verfolgt und folgendes rausbekommen :
PHP:
<?
	$im = '../person/endversions/thumbs/alex.jpg';
	$x = 0;
	$y = 0;
	$size = 0;
	$src = imagecreatefromjpeg($im);
	$width = imagesx($src);
	$heigth = imagesy($src);
	$pixel = imagecreate(1, 1);
	$size = $width * $heigth;
	echo $size;

	for($i=0; $i<=$size ; $i++)
	{
		$x = $x + 2;
		if ($i==$width){$y++;}
		imagecopyresized($src,$pixel,$x,$y,0,0,1,1,1,1);
		imagejpeg($src, '../images/gross_pixel.jpg', 100);
	}

	imagecopyresized($thumb,$src,0,0,0,0,50,50,50,50);
	imagejpeg($thumb, '../images/gross_pixel.jpg', 100);
	imagedestroy($thumb);
?>
Leider passiert da nichts...bzw. der Browser arbeitet sich tod. Haste eine Idee woran das liegen könnte?
Was für einen Wert hat denn $size.
Wenn der Wert zu hoch ist musst du evtl. ein Sleep oder ähnliches einbauen.
 
Ich wollte nur wissen ob der Wert vllt. zu hoch ist.
ich habe bei meinem ähnlichen Projekt Problem mit der Größe des Bildes gehabt.
Das hatte sich der Browser manchmal aufgehängt.
 
Nein, der wert stimmt schon. Aber jetzt habe ich eine fixe Lösung gefunden. Ich mache das einfach mit imageline() :-)

Poste gleich mal alles wenn es fertig ist.
 
PHP:
	$im = '../person/endversions/thumbs/alex.jpg';
	$y = 0; #starte mit Y-Koordinate 
	$x = 0; #starte mit X-Koordinate 
	$src = imagecreatefromjpeg($im); #Grafik aus alex.jpg im Speicher erstellen
	$black = ImageColorAllocate($src, 0, 0, 0); #Der oben erstellten Grafik  die Farbe schwarz geben

	$width = imagesx($src); #Herausfinden wie breit die Grafik ist

	for($i=0; $i<=$width; $i++)
	{
		$y = $y+2; # hier nach Belieben die Abstände zwischen den Linien bestimmen
		$x = $x+2;# hier nach Belieben die Abstände zwischen den Linien bestimmen
		imageline($src, $y, 0, $y , 50, $black); # Y-Linie ziehen
		imageline($src, 0, $x, 50 , $x, $black); # X-Linie ziehen
		imagejpeg($src, '../images/gross_pixel.jpg', 100); #Speichern und an den Browser ausgeben
	}
 
Zurück