gpt4 book ai didi

php - 使用 PHP 合并图像时的图像透明度和 alpha

转载 作者:可可西里 更新时间:2023-10-31 22:56:56 24 4
gpt4 key购买 nike

所以我在 PHP Doc 上找到了一些代码,并对其进行了轻微的编辑以合并我拥有的两张图片。然后图像保存在服务器上的文件夹中。但是有一个小问题,我无法弄清楚为什么会这样。

首先是我的代码:

 $glassurl = $_GET['GlassImg'];
$frameurl = $_GET['FrameImg'];
$filename = (int)date("H:i:s");

$src = imagecreatefromgif($frameurl);
$dest = imagecreatefromjpeg($glassurl);

imagecolortransparent($src, imagecolorat($src, 0, 0));

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

$src_x = imagesx($src);
$src_y = imagesy($src);
imagecopymerge($dest, $src, 0, 0, 0, 0, $src_x, $src_y, 100);

// Output and free from memory
imagepng($dest, 'uploads/imagetest.png');
imagegif($dest);

imagedestroy($dest);
imagedestroy($src

);

其次是关于图像的一些信息:

  1. 两张图片大小完全一样
  2. “图案”图像只是 block 颜色/图案
  3. 框架图像在框架内有透明部分(允许图案显示)
  4. 框架周围的区域是白色的以隐藏多余的图案

我希望当我将框架覆盖到图案上时,因为这些部分,它会产生一个窗框,里面有玻璃图案,白色会隐藏剩余的图案。

为了说明,我提供了图片。以及会发生什么。

图案:

pattern

框架:

frame

结果:

result

如您所见,它并没有达到我的预期。谁能告诉我哪里出错了?我想将框架覆盖到图案上,保持透明中心并使用多余的白色覆盖图案的其余部分。非常感谢任何帮助。

最佳答案

请注意,您的框架有白边,如果您仍然希望窗口是白色的,您需要裁剪它并删除下面添加的imagecolortransparent,否则您可以用这个

$imgl = "thumb/pattern.png";
$img2 = "thumb/frame.png";

$dest = imagecreatefrompng($imgl);
$src = imagecreatefrompng($img2);
imagecolortransparent($src, imagecolorat($src, 0, 0));

$src_x = imagesx($src);
$src_y = imagesy($src);
imagecopymerge($dest, $src, 0, 0, 0, 0, $src_x, $src_y, 100);

// Output and free from memory
header('Content-Type: image/png');
imagegif($dest);

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

输出

enter image description here


你也可以拥有

$imgl = "thumb/pattern.png";
$img2 = "thumb/frame.png";

$dest = imagecreatefrompng($imgl);
$src = imagecreatefrompng($img2);

$src_x = imagesx($src);
$src_y = imagesy($src);

$srcNew = imagecreatetruecolor($src_x, $src_y);
ImageColorTransparent($srcNew, imageColorAllocate($srcNew, 0, 0, 0));
imagecopy($srcNew, $src, 70, 50, 78, 60, 473, 293);
imagecopymerge($dest, $srcNew, 0, 0, 0, 0, $src_x, $src_y, 100);

header('Content-Type: image/png');
imagegif($dest);

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

输出

enter image description here

关于php - 使用 PHP 合并图像时的图像透明度和 alpha,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13007463/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com