2009-11-10 8 views

Antwort

8

ist ein Beispiel für die imagecolortransparent Funktion (wenn es hilft):

<?php 
// Create a 55x30 image 
$im = imagecreatetruecolor(55, 30); 
$red = imagecolorallocate($im, 255, 0, 0); 
$black = imagecolorallocate($im, 0, 0, 0); 

// Make the background transparent 
imagecolortransparent($im, $black); 

// Draw a red rectangle 
imagefilledrectangle($im, 4, 4, 50, 25, $red); 

// Save the image 
imagepng($im, './imagecolortransparent.png'); 
imagedestroy($im); 
?> 
+1

Eric bezwinge mich hier. Später auf der gleichen Seite kommentiert jemand: "Wenn Sie Palettenbilder verwenden (erstellt mit imagecreate()), ist die erste zugewiesene Farbe die Hintergrundfarbe. Diese Farbe kann nicht für Transparenz verwendet werden. Wenn Sie also den Hintergrund transparent machen wollen, Ordnen Sie zuerst eine Dummy-Hintergrundfarbe zu, weisen Sie dann die echte Hintergrundfarbe zu und deklarieren Sie diese als transparent. " –

40

einfach dies zu tun:

imagealphablending($img, false); 
imagesavealpha($img, true); 

vor der Ausgabe. Stellen Sie sicher, dass alle Quelldateien (sofern verwendet) auf PNG 32-Bit mit Transparenz eingestellt sind - wenn die Ausgabe nicht von schwarzem Hintergrund abweichen kann oder die Transparenz nicht entspricht.

+0

Transparenz oft "alpha" genannt wird. –

+1

Kürzer und süßer. –

+1

Die akzeptierte Lösung hat nicht wie erwartet funktioniert, aber diese ist perfekt! – testing

0

Es gibt eine Funktion namens imagecolortransparent, mit der Sie festlegen können, welche Farbe transparent gemacht wird. Ich weiß nicht, ob das deine Frage beantwortet. Hier

15

Hier ist das Beispiel

 $newimage = imagecreatetruecolor($dst_w, $dst_h); 
    imagealphablending($newimage, false); 
    imagesavealpha($newimage, true); 
    $transparentindex = imagecolorallocatealpha($newimage, 255, 255, 255, 127); 
    imagefill($newimage, 0, 0, $transparentindex); 
+0

Beste Antwort! Lief wie am Schnürchen! – andys