PHP中的图像叠加;黑色背景?

Posted

技术标签:

【中文标题】PHP中的图像叠加;黑色背景?【英文标题】:Image Overlay in PHP; Black Background? 【发布时间】:2010-12-12 01:52:18 【问题描述】:

当我使用 GD 库在 php 中执行图像叠加时,我总是得到黑色背景,但是,所有图像都正确叠加。有人可以帮忙吗?

<?php

    $images = array( $_GET['color'], $_GET['face'], $_GET['hat'] );


    $img = imagecreatetruecolor(58, 75);

    imagealphablending($img, true);
    imagesavealpha($img, true);

    imagecolorallocate($img, 255, 205, 255);
    imagecolorallocate($img, 255, 255, 255);
    imagecolortransparent($img, $white);

imagefilledrectangle($img, 0, 0, $imgWidth, $imgHeight, $white);
    foreach($images as $fn) 

        $cur = imagecreatefrompng($fn);
        imagealphablending($cur, true);
        imagesavealpha($cur, true);


        imagecopy($img, $cur, 0, 0, 0, 0, 58, 75);


        imagedestroy($cur);
       


    header('Content-Type: image/png');
    imagepng($img);

?>

【问题讨论】:

【参考方案1】:
// Create an image

$img = imagecreatetruecolor($imgWidth, $imgHeight);

$white = imagecolorallocate($img, 255, 255, 255);

// Make the background white

imagefilledrectangle($img, 0, 0, $imgWidth, $imgHeight, $white);

...可以帮忙。

【讨论】:

我将帖子的脚本编辑为我的最新脚本。仍然显示为黑色。【参考方案2】:

这是一个常见的问题,答案已经在stack overflow上;那里的答案完美地解决了这个问题。你可能想更努力地搜索:)

如果您要尝试做的不仅仅是最基本的图像处理,我建议您可以通过使用功能更强大(但不幸的是文档很少)imagick 库来让您的生活更轻松;它更快、更容易(同样,一旦您通过文档)和更强大。

【讨论】:

我已经搜索了 3 天,但似乎没有任何效果。 @Seth:正如 El Yobo 链接的讨论中所述,您应该在分配白色之前分配一个虚拟颜色,因为您不能使用第一个分配的颜色作为透明度。此外,在定义代码之前,您可以在代码中使用 $white

以上是关于PHP中的图像叠加;黑色背景?的主要内容,如果未能解决你的问题,请参考以下文章

如何在php GD中应用旋转功能后去除黑色背景?

使用gd在php中调整图像大小后的黑色背景

从图像中删除黑色背景。

scss 在横幅中的背景图像上创建黑色透明覆盖

css 在英雄部分背景上添加淡化到黑色过渡效果/叠加http://codepen.io/peterramsing/pen/jAxVBB/

上传和调整 Png 大小会产生黑色背景图像