加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 17:21:43 所属栏目:PHP教程 来源:网络整理
导读:所以我在 PHP Doc上找到了一些代码,并稍微编辑它以合并我拥有的两个图像.然后将图像保存在服务器上的文件夹中.然而,有一个小问题,我无法弄清楚它为什么会发生. 首先是我的代码: $glassurl = $_GET['GlassImg']; $frameurl = $_GET['FrameImg']; $filename =
所以我在 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));

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

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

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

    imagedestroy($dest);
    imagedestroy($src

);

其次有关图像的一些信息:

>两个图像的大小完全相同
>“图案”图像只是块颜色/图案
>帧图像在帧内具有透明部分(允许图案显示)
>框架周围的区域是白色到多余的图案

我希望当我将框架重叠到图案上时,由于这些部件会产生一个窗框,内部有玻璃图案,白色会隐藏剩余的图案.

为了说明我提供了图像.会发生什么.

图案:

帧:

结果:

正如你所看到的那样,它并没有达到我的预期.谁能告诉我哪里出错了?我想将框架叠加到图案上,保持透明中心并使用多余的白色覆盖其余的图案.任何帮助是极大的赞赏.

解决方法

请注意你的框架有白色的边缘,如果你想要窗户是你需要裁剪它并删除下面添加的imagecolortransparent如果不是你可以使用这个

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

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

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

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

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

产量

你也可以

$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));
imagecopy($srcNew,70,50,78,60,473,293);
imagecopymerge($dest,$srcNew,100);

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

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

产量

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读