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:
Das funktioniert soweit ja auch. Das Problem ist hier jedoch folgende Zeile:
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ß
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ß