【问题标题】:What’s wrong with this PNG Transparent image generator? The background is Black这个PNG透明图像生成器有什么问题?背景是黑色
【发布时间】:2013-10-20 01:56:44
【问题描述】:

首先:我想创建一个 PNG 图像并在其中绘制一个形状。

第二个:将第一个 PNG 重叠在另一个图像上(例如 jpg 图像) 问题是:当我创建第一个带有内部形状的 PNG 时(背景不透明并且很暗),所以这会在第二张图像上产生黑色重叠。

我该如何解决?

我不太会使用图像功能,所以遇到了麻烦。

注意事项:我需要创建第一个透明 PNG,然后将其重叠在第二个图像上。我不想直接在第二张图片上创建形状。

还有代码:

<?php

    define('EXAMPLE_TMP_SERVERPATH', '');
    define('EXAMPLE_TMP_URLRELPATH', '');


    $tempDir = EXAMPLE_TMP_SERVERPATH;
    $fileName = 'test3img.png';


    $imgW = 125;
    $imgH = 125;

    # First
    $base_image = imagecreatetruecolor($imgW, $imgH);

    $black = imagecolorallocate($base_image, 0, 0, 0);
    imagecolortransparent($base_image, $black);
    $col[0] = imagecolortransparent($base_image, $black);

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


    imagefill($base_image, 0, 0, $col[0]);

    imagefilledrectangle($base_image, 4, 4, 50, 25, 255);

    imagepng($base_image, $tempDir.$fileName);


# First2
$target_image = imagecreatetruecolor($imgW*5, $imgH*5);
$black2 = imagecolorallocatealpha($base_image, 0, 0, 0, 127); 
imagecolortransparent($target_image, $black2);

imagecopyresized($target_image, $base_image, 0, 0, 0, 0,$imgW, $imgH, $imgW, $imgH);
imagedestroy($base_image);
imagepng($target_image, $tempDir.$fileName);
imagedestroy($target_image);
# First2

    # Second    
    $dest = imagecreatefromjpeg('../avatar.jpg');
    $src = imagecreatefrompng(EXAMPLE_TMP_URLRELPATH.$fileName);


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

    imagealphablending($src, true);

    imagecopyresampled(
                        $dest,
                        $src,
                        0,0,
                        0,0,
                        200, 200,
                        125, 125
                    ); 

    imagepng($dest, EXAMPLE_TMP_URLRELPATH.'_m.jpeg');

    imagedestroy($dest);
    imagedestroy($src);

?>

【问题讨论】:

  • 我也想让形状透明

标签: php image png transparent


【解决方案1】:

还需要添加 alpha 通道: Alpha Channel

【讨论】:

  • 你能帮帮我吗?
  • 更改:$black = imagecolorallocate($base_image, 0, 0, 0);至:$black = imagecolorallocatealpha($base_image, 0, 0, 0, 127);试试看,然后回复我。
  • 这适用于我添加的第一个代码,但我忘记添加部分代码并将其添加为 first2。第一个和第二个工作正常。但是在 first2 之后,第二个 png 不透明并且是黑色的
  • 很高兴能帮上忙……对不起,我昏倒了。夜班很糟糕 :) 很高兴你自己解决了剩下的问题。
猜你喜欢
  • 2015-04-20
  • 2019-12-09
  • 1970-01-01
  • 2013-09-26
  • 2016-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多