Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP GD-透明PNG黑色背景_Php_Transparency_Gd_Alpha - Fatal编程技术网

PHP GD-透明PNG黑色背景

PHP GD-透明PNG黑色背景,php,transparency,gd,alpha,Php,Transparency,Gd,Alpha,我正在使用PHP和GD裁剪并输出一个带有以下代码的图像。它的工作原理很好,但当我把一个透明的PNG传递给它时,我得到了一个黑色的背景。我怎样才能阻止这一切 //setup switch ($source_type) { case IMAGETYPE_JPEG: $source = imagecreatefromjpeg($img_path); break; case IMAGETYPE_PNG: $source = imagecreatefrompng($img

我正在使用PHP和GD裁剪并输出一个带有以下代码的图像。它的工作原理很好,但当我把一个透明的PNG传递给它时,我得到了一个黑色的背景。我怎样才能阻止这一切

//setup
switch ($source_type) {
    case IMAGETYPE_JPEG:    $source = imagecreatefromjpeg($img_path);   break;
    case IMAGETYPE_PNG:     $source = imagecreatefrompng($img_path);    break;
}

// setup cropped destination
$cropped = imagecreatetruecolor($cropped_width, $cropped_height);

// create cropped image
$x = (($source_width / 100) * IMAGE_X) - ($cropped_width / 2);
$y = (($source_height / 100) * IMAGE_Y) - ($cropped_height / 2);
imagecopy(
    $cropped,
    $source,
    0, 0,
    $x, $y,
    $cropped_width, $cropped_height
);

// output inc header
header('Content-type: image/jpeg');
imagejpeg($cropped);

它应该是大致如下的东西:

switch ($source_type)
{
 case IMAGETYPE_PNG:

    $background = imagecolorallocate($source, 0, 0, 0);
    // remove the black 
    imagecolortransparent($source, $background);

    // turn off alpha blending
    imagealphablending($source, false);


    imagesavealpha($source, true);

    break;
}

有一个类似的问题

应该是这样的:

switch ($source_type)
{
 case IMAGETYPE_PNG:

    $background = imagecolorallocate($source, 0, 0, 0);
    // remove the black 
    imagecolortransparent($source, $background);

    // turn off alpha blending
    imagealphablending($source, false);


    imagesavealpha($source, true);

    break;
}
还有一个类似的问题