如何将GIF源文件成像到透明的PNG目标文件而不会丢失背景色?

时间:2017-04-13 06:27:11

标签: php image image-processing png gif

我正在关注PHP文档中的示例,“使用Alpha通道向图像添加水印”,但我的目标图像是透明的PNG文件,而我的图章图像是GIF图像。我遇到的问题是我的印章GIF图像失去了背景颜色,黑色,并在我的最终图像中变得透明。我的最终图片扩展名应与源文件GIF相同。

<?php
    $source = 'path_to_file/source.gif';//190x34 size image with black background
    $trans_img_dir = 'path_to_file/blank.png';
    $final_image = 'path_to_file/final.gif';
    $BLANK_IMG = 200;

    //create transparent image
    $imcreate = imagecreatetruecolor($BLANK_IMG, $BLANK_IMG);
    imagecolortransparent($imcreate, imagecolorallocatealpha($imcreate, 0, 0, 0, 127));
    //imagealphablending($imcreate, false);
    //imagesavealpha($imcreate, true);  
    imagepng($imcreate, $trans_img_dir);
    imagedestroy($imcreate);

    $blank_mark = imagecreatefrompng($trans_img_dir);

    $im = imagecreatefromgif($source);

    $sx = imagesx($im);
    $sy = imagesy($im);

    imagecopy(
        $blank_mark,
        $im,
        $BLANK_IMG/2 - $sx/2,
        $BLANK_IMG/2 - $sy/2,
        0,
        0,
        $sx,
        $sy
    );

    imagegif($blank_mark, $final_image);
    imagedestroy($blank_mark);
    imagedestroy($im);

&GT;

source

destination

0 个答案:

没有答案