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

如何使用PHP imagefilter将JPG图片转为深黑色矢量风格图像

功能实现方案

你当前只做了灰度化处理,缺少高对比度拉伸和二值化步骤,所以只能得到灰色效果,无法输出纯黑的矢量剪影效果。你之前注释的对比度参数设置错误,IMG_FILTER_CONTRAST 传入正值才会提升对比度,负值会降低对比度。

核心代码修改

替换你原代码中$effect判断段的逻辑即可:

if($effect){
    // 1. 转为灰度图
    imagefilter($dst_img, IMG_FILTER_GRAYSCALE);
    // 2. 提升对比度,参数可在80~100区间调整,数值越高黑白分界越清晰
    imagefilter($dst_img, IMG_FILTER_CONTRAST, 95);
    // 3. 降低亮度,参数可在-10~-30区间调整,确保暗部足够深
    imagefilter($dst_img, IMG_FILTER_BRIGHTNESS, -15);

    // 可选:二值化处理,将所有像素转为纯黑/纯白,完全符合矢量剪影效果
    $imgW = imagesx($dst_img);
    $imgH = imagesy($dst_img);
    $threshold = 127; // 阈值可根据原图明暗在120~130区间调整
    for ($x = 0; $x < $imgW; $x++) {
        for ($y = 0; $y < $imgH; $y++) {
            $grayVal = imagecolorat($dst_img, $x, $y) & 0xFF;
            $newColor = $grayVal > $threshold ? 0xFFFFFF : 0x000000;
            imagesetpixel($dst_img, $x, $y, $newColor);
        }
    }
}

补充说明

  • 若不需要极致的纯黑白效果,可删除二值化的循环部分,仅保留前三个滤镜即可满足需求
  • 输出时优先选择PNG格式,可避免JPEG压缩导致的边缘模糊,更贴合矢量风格的清晰边缘要求

内容的提问来源于stack exchange,提问作者Hakimuddin Saifee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:36:00