You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP使用imagefilledpolygon绘制多边形如何设置边框粗细与颜色

你使用的GD库的imagefilledpolygon函数本身仅支持填充色配置,要实现带自定义粗细、颜色的边框,需要在绘制完填充多边形后,额外调用边框绘制接口即可,具体实现如下:

实现步骤

  • 第一步:在绘制填充多边形的代码后,先声明边框的颜色(支持透明效果)
  • 第二步:用imagesetthickness函数设置边框的像素粗细
  • 第三步:调用imagepolygon函数,传入和填充多边形完全相同的顶点坐标,即可完成边框绘制

注意:你当前代码中imagealphablending($image, false);的操作要放在边框绘制完成之后执行,否则透明通道配置会导致边框无法正常渲染。

修改后完整代码

public function draw(){

    $image_src = DIR_UPLOADS . 'face.png';

    list($width, $height) = getimagesize(DIR_UPLOADS . 'face.png');

    $image = imagecreatefrompng($image_src);
    //$image = imagecreatetruecolor(400, 300);

    // 多边形透明背景色
    $poly_bg_color = imagecolorallocatealpha($image, 207, 199, 186, 50);


    $values = array(
        0,   0,
        150, 250,
        350, 250
    );

    // 绘制填充多边形
    imagefilledpolygon($image, $values, ((count($values)) / 2 ), $poly_bg_color);

    // ====== 新增边框配置 开始 ======
    // 定义边框颜色:RGBA最后一个参数0为完全不透明,127为完全透明,可按需调整
    $poly_border_color = imagecolorallocatealpha($image, 255, 0, 0, 0);
    // 设置边框粗细,单位为像素
    imagesetthickness($image, 3);
    // 绘制多边形边框,坐标参数和填充多边形保持一致即可
    imagepolygon($image, $values, count($values)/2, $poly_border_color);
    // ====== 新增边框配置 结束 ======

    // 透明背景配置需放在边框绘制之后执行
    imagealphablending($image, false);
    imagesavealpha($image, true);
    $transparentindex = imagecolorallocatealpha($image, 255, 255, 255, 127);
    imagefill($image, 0, 0, $transparentindex);

    imagepng($image, DIR_UPLOADS . 'out.png', 9);

    echo "<img src='/uploads/out.png?v=" . time() . "' />";

    imagedestroy($image);
}

内容的提问来源于stack exchange,提问作者Chhorn Soro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 16:54:00