如何将带有 alpha 通道的 PNGS 合并为一张更大的图像?
Posted
技术标签:
【中文标题】如何将带有 alpha 通道的 PNGS 合并为一张更大的图像?【英文标题】:How to merge PNGS with alpha channels into one larger image? 【发布时间】:2010-12-17 00:39:56 【问题描述】:我正在尝试将这些分层:
进入这个:
但我一直得到的是:
这是相关代码,我不确定我缺少什么:
$sig_background = imagecreatefrompng("sanctum-signature.png");
imagealphablending($sig_background, false);
imagesavealpha($sig_background, true);
$sig_gamertile = imagecreatefrompng($gamertile_masked_file);
imagealphablending($sig_gamertile, false);
imagesavealpha($sig_gamertile, true);
$sig_gametile = imagecreatefrompng($gametile_masked_file);
imagealphablending($sig_gamertile, false);
imagesavealpha($sig_gamertile, true);
imagecopymerge($sig_background, $sig_gamertile, 175, 2, 0, 0, 64, 64, 100);
imagecopymerge($sig_background, $sig_gametile, 342, 20, 0, 0, 64, 64, 100);
如果缺少更多信息,请告诉我,我会尽力填补空白。感谢您的宝贵时间。
编辑 - 这里是文件的链接(托管在 photobucket 上) gamertile gametile
【问题讨论】:
顺便说一句,gametile 和 gamertile 在最后一个屏幕截图中被渲染,看起来你的掩码在源 PNG 中没有正确应用。你能发布一些源图片的链接吗? 【参考方案1】:您的代码中有错字,是复制/粘贴错误还是真正的错误?
你这样做:
$sig_gamertile = imagecreatefrompng($gamertile_masked_file);
imagealphablending($sig_gamertile, false);
imagesavealpha($sig_gamertile, true);
然后:
$sig_gametile = imagecreatefrompng($gametile_masked_file);
但紧接着,您继续在$sig_gamertile
上调用函数而不是$sig_gametile
:
imagealphablending($sig_gamertile, false);
imagesavealpha($sig_gamertile, true);
显然,彻底重命名一些变量将有助于防止这种情况发生。
【讨论】:
【参考方案2】:行:
imagealphablending($im, false);
禁用 Alpha 混合。使用 true 而不是 false。
【讨论】:
以上是关于如何将带有 alpha 通道的 PNGS 合并为一张更大的图像?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ios 中使用 vImage 旋转和粘贴带有 alpha 通道的图像?
如何创建带有 alpha 通道的 h264 视频以用于 HTML5 Canvas?
使用 FPDF (PHP) 插入带有 alpha 通道的 PNG
带有 Alpha 通道的 OpenCV getRectSubPix