Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/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
png图像复制到另一个php图像_Php_Image_Png - Fatal编程技术网

png图像复制到另一个php图像

png图像复制到另一个php图像,php,image,png,Php,Image,Png,我正在尝试将一个png图像添加到另一个图像上。我唯一的问题是png图像在周围创建了一个透明的背景,而不是另一个图像的背景 图为: 预期结果: 代码如下: <?php $img_name = "image_" . date("U") . ".png"; $whoareyou_src = imagecreatefrompng('who-are-you.png'); create_image($img_name, $whoareyou_src); print

我正在尝试将一个png图像添加到另一个图像上。我唯一的问题是png图像在周围创建了一个透明的背景,而不是另一个图像的背景

图为:

预期结果:

代码如下:

<?php
    $img_name = "image_" . date("U") . ".png";
    $whoareyou_src = imagecreatefrompng('who-are-you.png');

    create_image($img_name, $whoareyou_src);
    print "<img src=". $img_name .">";

    function  create_image($img_name, $whoareyou_src) {
        $im = @imagecreate(800, 610) or die("Cannot Initialize new GD image stream");
        $background_color = imagecolorallocate($im, 0, 128, 128);  // teal

        // imagecopy ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h )
        $success = imagecopy($im, $whoareyou_src, 0, 0, 0, 0, imagesx($whoareyou_src), imagesy($whoareyou_src));
        echo "Image Copy: " . $success . "<br>"; // testing

        imagepng($im, $img_name);

        imagedestroy($im);
        imagedestroy($whoareyou_src);
    }

?>
但这并没有改变任何事情

更新

尝试使用
imagecopyresampled
alpha
设置,但结果仍然相同:

<?php
    $img_name = "image_" . date("U") . ".png";
    $whoareyou_src = imagecreatefrompng('who-are-you.png');

    create_image($img_name, $whoareyou_src);
    print "<img src=". $img_name .">";

    function  create_image($img_name, $whoareyou_src) {
        $im = @imagecreate(800, 610) or die("Cannot Initialize new GD image stream");
        imagealphablending($im, false);
        imagesavealpha($im,true);

        $background_color = imagecolorallocate($im, 0, 128, 128);  // teal

        $success = imagecopyresampled($im, $whoareyou_src, 0, 0, 0, 0, imagesx($whoareyou_src), imagesy($whoareyou_src), imagesx($whoareyou_src), imagesy($whoareyou_src));
        echo "Image Copy: " . $success . "<br>";

        imagepng($im, $img_name);

        imagedestroy($im);
        imagedestroy($whoareyou_src);
    }

?>

试试这样的方法。。。
create_image($img_name, $whoareyou_src);
print "<img src=". $img_name .">";

function  create_image($img_name, $whoareyou_src) {
    $im = @imagecreatetruecolor(800, 610) or die("Cannot Initialize new GD image stream");
    imagealphablending($im, false);
    imagesavealpha($im,true);

    $background_color = imagecolorallocate($im, 0, 128, 128);  // teal

    // imagecopy ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h )
    $success = imagecopyresampled($im, $whoareyou_src, 0, 0, 0, 0, imagesx($whoareyou_src), imagesy($whoareyou_src));
    echo "Image Copy: " . $success . "<br>"; // testing

    imagepng($im, $img_name);

    imagedestroy($im);
    imagedestroy($whoareyou_src);
}
create_image($img_name,$whoareyou_src);
打印“”;
函数create\u image($img\u name,$whoareyou\u src){
$im=@imagecreatetruecolor(800610)或die(“无法初始化新的GD图像流”);
ImageAlphabling($im,false);
imagesavealpha($im,true);
$background_color=imagecolorallocate($im,0,128,128);//teal
//imagecopy(资源$dst_im、资源$src_im、int$dst_x、int$dst_y、int$src_x、int$src_y、int$src_w、int$src_h)
$success=imagecopyresampled($im,$whoareyou_src,0,0,0,imagesx($whoareyou_src),imagesy($whoareyou_src));
echo“映像复制:”.$success.
“;//测试 imagepng($im,$img_名称); 图像处理(港币);; 图像销毁($whoareyou\u src); }

?>

这应该可以做到:

<?php
    $img_name = "image_" . date("U") . ".png";
    $whoareyou_src = imagecreatefrompng('who-are-you.png');

    create_image($img_name, $whoareyou_src);
    print "<img src=". $img_name .">";

    function  create_image($img_name, $whoareyou_src) {
        $im = @imagecreatetruecolor(800, 610) or die("Cannot Initialize new GD image stream");
        $background_color = imagecolorallocate($im, 0, 128, 128);  // teal
        imagefilledrectangle($im, 0, 0, 800, 610, $background_color);

        // imagecopy ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h )
        $success = imagecopy($im, $whoareyou_src, 0, 0, 0, 0, imagesx($whoareyou_src), imagesy($whoareyou_src));
        echo "Image Copy: " . $success . "<br>"; // testing

        imagepng($im, $img_name);

        imagedestroy($im);
        imagedestroy($whoareyou_src);
    }

?>


您的描述不清楚,您想要透明背景还是蓝绿色背景?您是否尝试过使用
imagefill
用您的颜色预先填充背景图像?我想要的是蓝绿色背景。使用
imagefill
时的结果相同。实际上,我刚刚尝试过,但结果相同。我将更新我的问题。我刚刚注意到您添加了
imagecreatetruecolor
!我没有说我的错。
<?php
    $img_name = "image_" . date("U") . ".png";
    $whoareyou_src = imagecreatefrompng('who-are-you.png');

    create_image($img_name, $whoareyou_src);
    print "<img src=". $img_name .">";

    function  create_image($img_name, $whoareyou_src) {
        $im = @imagecreatetruecolor(800, 610) or die("Cannot Initialize new GD image stream");
        $background_color = imagecolorallocate($im, 0, 128, 128);  // teal
        imagefilledrectangle($im, 0, 0, 800, 610, $background_color);

        // imagecopy ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h )
        $success = imagecopy($im, $whoareyou_src, 0, 0, 0, 0, imagesx($whoareyou_src), imagesy($whoareyou_src));
        echo "Image Copy: " . $success . "<br>"; // testing

        imagepng($im, $img_name);

        imagedestroy($im);
        imagedestroy($whoareyou_src);
    }

?>