用gd制作混合图像

Posted

技术标签:

【中文标题】用gd制作混合图像【英文标题】:making mix image with gd 【发布时间】:2018-11-20 13:22:44 【问题描述】:

我正在尝试使用 php 和 gd 库制作表单。 表单包含一个带有透明包装的 png 标志。 现在我有 3 个问题:

    当我制作边框时,我想将徽标放在顶部角落 图片,它不再是透明的背景了

    我使用波斯字体并使用 imagettftext 函数。它显示了 字符,但在波斯语中,我们已经合并了单词,但它显示 字符分隔

    如何绘制圆角边框

这是我的代码:

$fontSize=4;
$width = imagefontwidth($font) * strlen($string)+10 ;
$height = imagefontheight($font) ;


$handle = ImageCreate (800, 400) or die ("Cannot Create image");
$logo = imagecreatefrompng( 'Logo.png' );

$bg_color = ImageColorAllocate ($handle, 255, 240, 250);
$txt_color = ImageColorAllocate ($handle, 0, 0, 0);

$title="فرم قرارداد";
$font = "IRANSans.ttf";
$title_size = 18;
imagettftext( $handle, $title_size, 0, 620, 100, $txt_color, $font, $title );

$black = imagecolorallocate($handle, 0, 0, 0);
imagerectangle($handle, 20, 20, 780, 380, $black);
imagecopy($handle, $logo, 10, 10, 0, 0, 161, 160);

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

【问题讨论】:

【参考方案1】:
    看到这个答案:php GD create a transparent png image 如果您想利用您的语言的印刷特征,则必须使用 OpenType (.otf) 字体。 您可能想看看 GD 的imagearc。

【讨论】:

嗨。感谢你的回答。关于数字 2,我通过在线工具将我的 ttf 转换为 otf,但仍然一无所获 关于我搜索的imagearc。我认为它可以用直线和圆弧绘制圆角正方形,但它使以后的更改变得困难。有没有简单的函数来绘制圆角正方形 我不知道 GD 库中有这样的功能。你可能想看看php.net/manual/en/class.imagickdraw.php。字体转换器是出了名的不可靠。如果我是你,我会找到一种(许可的)OTF 字体,可以开箱即用地为你正确处理这个问题。 再次感谢。我最终用一个名为 persiangd 的库解决了字符问题。它支持 ttf 和 otf 字体。我将检查您对 imagickdraw 的评论并分享结果。 酷,祝你好运。如果您发现我的回答有帮助,请考虑将其标记为已接受的答案:)。谢谢。

以上是关于用gd制作混合图像的主要内容,如果未能解决你的问题,请参考以下文章

如何将 2 个图像与 PHP(GD-GD2 库)混合,如乘法、颜色燃烧、颜色道奇等

使用图层和混合模式制作的 Paper.js 橡皮擦工具

混合图层图像Android上的触摸事件

PHP gd 从生成的图像制作缩略图

图像滤镜---图像扫描算法

使用 GD 的背景图像透明度