Kann die Transparenz von PNG-Bildern erhalten bleiben, wenn GDlib imagecopyresampled von PHP verwendet wird?

Das folgende PHP-Code-Snippet verwendet GD, um die Größe eines vom Browser hochgeladenen PNG auf 128 x 128 zu ändern. Es funktioniert hervorragend, außer dass die transparenten Bereiche im Originalbild in meinem Fall durch eine durchgehende schwarze Farbe ersetzt werden.

Obwohlimagesavealpha ist gesetzt, etwas stimmt nicht.

Wie kann die Transparenz im neu abgetasteten Bild am besten erhalten werden?

$uploadTempFile = $myField[ 'tmp_name' ]
list( $uploadWidth, $uploadHeight, $uploadType ) 
  = getimagesize( $uploadTempFile );

$srcImage = imagecreatefrompng( $uploadTempFile );    
imagesavealpha( $targetImage, true );

$targetImage = imagecreatetruecolor( 128, 128 );
imagecopyresampled( $targetImage, $srcImage, 
                    0, 0, 
                    0, 0, 
                    128, 128, 
                    $uploadWidth, $uploadHeight );

imagepng(  $targetImage, 'out.png', 9 );

Antworten auf die Frage(20)

Ihre Antwort auf die Frage