Imageupload + Crop <-> Transparenz beibehalten

d-braun

Erfahrenes Mitglied
Hi,

ich habe mir eine Uploadfunktion gebastelt mit welcher ich die Möglichkeit habe Bilder hochzuladen und in der Größe anzupassen. Funktioniert soweit auch wunderbar. Das Einzige was noch nicht so funktioniert wie es soll ist die Transparenz bei GIFs oder PNGs (siehe Testbild im Anhang).

Mit folgender Funktion wird das Bild transparent:
PHP:
	function setTransparency($new_image, $src_image) {
		$transparencyIndex = imagecolortransparent($src_image);
		$transparencyColor = array('red' => 255, 'green' => 255, 'blue' => 255);
		if ($transparencyIndex >= 0) {
			$transparencyColor = imagecolorsforindex($src_image, $transparencyIndex);   
		}
		$transparencyIndex = imagecolorallocate($new_image, $transparencyColor['red'], $transparencyColor['green'], $transparencyColor['blue']);
		imagefill($new_image, 0, 0, $transparencyIndex);
		imagecolortransparent($new_image, $transparencyIndex);
	}

Das funktioniert soweit ja auch. Das Problem ist hier jedoch folgende Zeile:
PHP:
$transparencyColor = array('red' => 255, 'green' => 255, 'blue' => 255);

Diese bewirkt dass alles was diesen Farbcode (in dem Fall schwarz) hat transparent wird.
Möglich wäre z.B. einen relativ untypischen Farbcode zu setzen (z.B. Pink 255/0/225). Das würde vermutlich in 99,9% der Fälle zu dem gewünschten Ergebniss führen ist jedoch keine Garantie dass wirklich nur das transparent gemacht wird was transparent werden soll bzw. vorher schon transparent war.

Jemand ne Idee wie man das Problem lösen kann?

Gruß
 

Anhänge

  • testbild.png
    testbild.png
    232 Bytes · Aufrufe: 52
Zurück