图像上传转png透明背景图像

时间:2015-02-21 02:27:00

标签: php image

我有这个不想合作的图片上传脚本。

它坚持将透明的png变为黑色。

  $img = getimagesize($imgUrl);
switch(strtolower($img['mime']))
{
    case 'image/png':
        //$img_r = imagecreatefrompng($imgUrl);
        $source_image = imagecreatefrompng($imgUrl);
        imagealphablending($source_image, false);
        imagesavealpha($source_image, true);
        $type = '.png';
        break;
    case 'image/jpeg':
        //$img_r = imagecreatefromjpeg($imgUrl);
        $source_image = imagecreatefromjpeg($imgUrl);
        error_log("jpg");
        $type = '.jpeg';
        break;
    case 'image/gif':
        //$img_r = imagecreatefromgif($imgUrl);
        $source_image = imagecreatefromgif($imgUrl);
        $type = '.gif';
        break;
    default: die('image type not supported');
}

    // resize the original image to size of editor
    $resizedImage = imagecreatetruecolor($imgW, $imgH);
    imagecopyresampled($resizedImage, $source_image, 0, 0, 0, 0, $imgW, $imgH, $imgInitW, $imgInitH);

$final_image = imagecreatetruecolor($cropW, $cropH);
    imagecolortransparent($final_image, imagecolorallocate($final_image, 0, 0, 0));
    imagecopyresampled($final_image, $resizedImage, 0, 0, $imgX1, $imgY1, $cropW, $cropH, $cropW, $cropH);

// finally output png image
if($type == '.png' ) {
    imagepng($final_image, $output_filename.$type);
} else {
    imagejpeg($final_image, $output_filename.$type, $jpeg_quality);
}

$imgur = new Imgur_ctrl($output_filename.$type);

$img_url = $imgur->upload();

我尝试了alphablending并保存,但它仍然变成黑色..不知道如何解决这个问题。

感谢您的帮助

编辑:

我在输出之前尝试了alpha混合,就像你在google搜索中发现的许多其他类似问题一样。

$final_image = imagecreatetruecolor($cropW, $cropH);

imagecolortransparent($final_image, imagecolorallocate($final_image, 0, 0, 0));
imagecopyresampled($final_image, $resizedImage, 0, 0, $imgX1, $imgY1, $cropW, $cropH, $cropW, $cropH);

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

// finally output png image
if($type == '.png' ) {
    imagepng($final_image, $output_filename.$type);
} else {
    imagejpeg($final_image, $output_filename.$type, $jpeg_quality);
}

它仍然变成黑色。

我不希望保持透明(如果确实如此,它会很棒)但它甚至可以用白色工作。

0 个答案:

没有答案