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

如何高效替换图像局部渐变色彩?求公式或替代调整方案

替换渐变色彩的高效方法(替代手动调Hue/Saturation)

核心问题分析

你需要将白→源色(如黄)、黑→源色的渐变区域,替换为白→目标色(如绿)、黑→目标色的渐变,同时保留原有的明暗过渡和黑色线条。单纯拖动Hue/Saturation滑块难以匹配理想效果,因为全局调整无法精准映射原渐变的比例关系。


方案1:渐变映射工具(最简单高效)

这是最适配需求的工具,基于明度映射直接替换渐变,完美保留原线条和过渡:

  • 打开图像,点击图层面板的「创建新的填充或调整图层」→「渐变映射」
  • 点击渐变条打开渐变编辑器,创建自定义渐变:
    • 左端色标设为黑色(对应原图像的黑色线条)
    • 中间色标设为目标色(如绿色)(对应原图像的纯源色)
    • 右端色标设为白色(对应原图像的高光白色)
  • 拖动中间色标的位置,匹配原渐变的过渡幅度:如果原渐变中纯源色的占比更高,就把中间色标往两端挪,反之则往中间靠
  • 若黑色线条被影响,可给渐变映射图层添加蒙版,用黑色画笔涂抹线条区域恢复黑色

方案2:公式化计算Hue/Saturation滑块参数

如果你坚持使用Hue/Saturation工具,可以通过HSB色彩空间的参数计算滑块值:

  1. 用吸管工具提取纯源色的HSB值(记为 Hs, Ss, Bs)和纯目标色的HSB值(记为 Ht, St, Bt)
  2. 计算滑块数值:
    • 色相(Hue):Ht - Hs(色相范围0-360,结果为负则加360,超过360则减360)
    • 饱和度(Saturation):(St / Ss) * 100 - 100(若Ss=0则为白色,无需调整)
    • 明度(Lightness):(Bt / Bs) * 100 - 100(若Bs=1则为白色,无需调整)
  3. 打开Hue/Saturation面板,输入计算出的数值即可

注意:此方法仅适用于无其他杂色的纯渐变区域,复杂交织场景下不如渐变映射可靠。


方案3:脚本批量处理(适合大量重复操作)

如果需要批量处理类似图像,可编写Photoshop JavaScript脚本实现像素级映射:

// 示例脚本:替换指定区域的渐变色彩
var doc = app.activeDocument;
var sourceColor = new SolidColor();
sourceColor.hsb.hue = 60; // 纯黄色色相
sourceColor.hsb.saturation = 100;
sourceColor.hsb.brightness = 100;

var targetColor = new SolidColor();
targetColor.hsb.hue = 120; // 纯绿色色相
targetColor.hsb.saturation = 100;
targetColor.hsb.brightness = 100;

var selection = doc.selection;
var pixels = selection.getPixels();

for(var y=0; y<selection.height; y++){
  for(var x=0; x<selection.width; x++){
    var pixel = pixels[y][x];
    // 跳过黑色线条
    if(pixel.rgb.red === 0 && pixel.rgb.green === 0 && pixel.rgb.blue === 0) continue;
    
    var hsb = pixel.hsb;
    // 计算原像素相对于源色的饱和度/明度比例
    var sRatio = hsb.saturation / sourceColor.hsb.saturation;
    var bRatio = hsb.brightness / sourceColor.hsb.brightness;
    
    // 映射到目标色
    pixel.hsb.hue = targetColor.hsb.hue;
    pixel.hsb.saturation = sRatio * targetColor.hsb.saturation;
    pixel.hsb.brightness = bRatio * targetColor.hsb.brightness;
    
    pixels[y][x] = pixel;
  }
}

selection.setPixels(pixels);

使用方法:选中目标区域后,运行脚本即可自动替换渐变。

内容的提问来源于stack exchange,提问作者J. A.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 06:12:47