Cómo preservar la transparencia al cambiar el tamaño de PNG usando Perl y GD

Este es el código que estoy usando:

!/usr/bin/perl
use GD;
sub resize
{
    my ($inputfile, $width, $height, $outputfile) = @_;
    my $gdo = GD::Image->new($inputfile);

    ## Begin resize

    my $k_h = $height / $gdo->height;
    my $k_w = $width / $gdo->width;
    my $k = ($k_h < $k_w ? $k_h : $k_w);
    $height = int($gdo->height * $k);
    $width  = int($gdo->width * $k);

    ## The tricky part

    my $image = GD::Image->new($width, $height, $gdo->trueColor);
    $image->transparent( $gdo->transparent() );
    $image->copyResampled($gdo, 0, 0, 0, 0, $width, $height, $gdo->width, $gdo->height);

    ## End resize

    open(FH, ">".$outputfile);      
    binmode(FH);
    print FH $image->png();
    close(FH);
}
resize("test.png", 300, 300, "tested.png");

La imagen de salida tiene un fondo negro y se pierden todos los canales alfa.

Estoy usando esta imagen:http://i54.tinypic.com/33ykhad.png

Este es el resultado:http://i54.tinypic.com/15nuotf.png

Probé todas las combinaciones de alpha () y transparancy (), etc., ninguna de ellas funcionó .....

Por favor, ayúdame con este problema.

Respuestas a la pregunta(1)

Su respuesta a la pregunta