图片换颜色怎么做?颜色范围怎么调才不误伤

图片换颜色常见的翻车,不是颜色没换上,而是不想改的地方也被改了。图片换色,是指按颜色差异找出图中与取样色相近的像素,再把它们换成新颜色或变透明的操作;它只认颜色、不认物体。下面用一张红色咖啡杯照片实测颜色范围从 16 调到 100 的变化,并讲清保留明暗、JPG 图标残边和变透明后的白边怎么处理。

图片换色是怎么判断「同一种颜色」的?

换色工具会计算每个像素和取样色的距离,距离小于「颜色范围」的像素才会被换掉。距离越近,换得越彻底;落在「边缘柔和度」过渡带里的像素只换一部分,这样边缘才不会出现生硬的台阶。

取样色
在图上点一下得到的颜色,所有判断都以它为基准。
颜色范围
0~150,默认 32。数值越大,越多相近颜色被算作同一种。
边缘柔和度
0~100,默认 24。范围之外再留一段渐变带,像素按距离部分换色。
保留明暗
默认开启。按色差整体平移颜色,暗部换色后仍是暗的。
变透明
不换成新颜色,而是降低这些像素的不透明度。
输出格式
换色保持原格式;变透明时 JPG 改为 PNG 输出。

鲜艳的颜色,阴影也算同一种

单纯按 RGB 距离计算,同一个红杯子的亮面和暗面会被当成两种颜色。比如取样色是杯身的#AD2E11,暗处像素 rgb(90, 22, 10) 的 RGB 距离是 86.7,远超默认范围,换色后阴影里会留下一块暗红。

小鹿 Image 的处理是:取样色越鲜艳,「同一色相只是变暗或变亮」的差异就打得越轻。对这个红色,明暗方向的差异只按 35% 计入,上面那个暗处像素的距离降到 30.4,默认范围就能覆盖。灰、白、黑没有色相可言,深浅本身就是它们的区别,所以仍按原始距离严格区分——白底上的黑字不会被当成白色。

像素(与取样色 #AD2E11 比)RGB 直线距离放宽明暗后的距离
杯身偏暗处 rgb(120, 30, 12)55.619.5
杯身阴影 rgb(90, 22, 10)86.730.4
把手下的深影 rgb(60, 15, 8)117.541.2
偏橙的反光 rgb(210, 70, 40)49.728.0

颜色范围调多少?咖啡杯实测给出答案

颜色范围没有通用的固定值,合适区间取决于画面里有没有和目标相近的颜色。下面这张公有领域的咖啡照片很典型:红色杯碟放在红棕色木桌上,两者色相接近,正好用来观察误伤从哪里开始。

红色咖啡杯和杯碟放在红棕色木桌上的原图
原图:取样点在杯身,#AD2E11
颜色范围 16 时杯子变蓝,把手下的阴影仍是暗红色
范围 16:把手阴影还是暗红,左上角木纹已开始变蓝
颜色范围 32 时杯碟完整变蓝,木桌出现蓝色条纹
范围 32:杯碟换全,木桌出现大片蓝色条纹

同一张图、同一个取样点,只改颜色范围,被判为目标色的像素占比如下:

颜色范围判为目标色的像素画面表现
1622.2%杯身大部分换好,深影残留;木纹零星变色
32(默认)37.2%杯碟完整;木桌亮部开始成片变色
4860.8%桌面过半变蓝,已不可用
6470.1%几乎整张桌子变色
10083.8%只剩白色杯沿和咖啡没变

范围从 32 到 48,命中比例一下多了二十多个百分点,对照预览,多出来的几乎全是木桌。如果按纯 RGB 距离计算,范围 64 只会命中 38.5%,看起来更“克制”,代价却是杯身阴影换不干净——这就是放宽明暗的取舍。

调颜色范围的顺序
  1. 取样点选在目标颜色纯正的地方,避开高光和反光。
  2. 从默认 32 开始,看预览里先出问题的是“没换全”还是“换多了”。
  3. 没换全就每次加 8;一旦无关区域开始变色,立刻退回上一档。
  4. 两头都不满意,说明这张图的颜色本身分不开,换个处理方法更省时间。

「保留原有明暗纹理」要不要开?

有光影的照片要开,纯色的图标、Logo 和文字要关。开启时,工具在 Lab 色彩空间里把“取样色到新颜色”的差值整体加到每个像素上,亮的地方仍亮,暗的地方仍暗;关闭时,命中的像素全部填成同一个新颜色。

保留明暗开启时,蓝色杯子仍有高光和阴影
开启:杯身保留弧面的明暗过渡
保留明暗关闭时,杯子变成一块没有立体感的平涂蓝色
关闭(范围 48):杯子像一块平涂的色块

用亮度的标准差衡量明暗起伏更直观。同一批被命中的像素,原图亮度标准差是 25.6;开启保留明暗后是 18.8,起伏基本还在;关闭后是 0,所有像素一模一样。照片里关闭它,几乎一定会显得假。

反过来,给纯色图标换色时开着它,Logo 里原本就有的轻微压缩噪点会被一起“平移”过去,新颜色看起来斑驳。这类素材关掉后颜色更匀。要先确认新颜色的准确色值,可以用图片取色的方法从品牌稿里读出 HEX 值再填进去。

JPG 图标换色,边缘为什么留一圈旧颜色?

JPG 压缩会在色块边缘制造一圈杂色,这些像素离取样色太远,默认范围覆盖不到。同一个红底白字的圆形图标,分别存成 PNG 和质量 75 的 JPG,关掉保留明暗、换成绿色,统计残留的明显偏红像素:

颜色范围PNG 原图残留JPG 原图残留
86462681
166361874
325711043
48539715
64520618

PNG 那一列基本不随范围变化,剩下的五六百个是圆和文字边缘的抗锯齿像素,本来就是红与白的混合色,换色后呈淡淡的过渡,肉眼看是正常的边缘。JPG 在默认范围下的残留接近 PNG 的两倍,要调到 48~64 才追平。

图标换色配方

有 PNG 或 SVG 原件就用原件;只有 JPG 时关闭保留明暗,颜色范围先放到 48,边缘干净后再看图标里有没有别的颜色被误伤。

把某个颜色变透明,边缘白边怎么处理?

变透明时,工具会按混合比例反推前景原色,能减轻浅色毛边,但反差很大的边缘无法完全消除。像素越靠近取样色越透明;过渡带里半透明的像素,会把混进去的背景色扣掉,避免白底素材抠出来后带一圈白。

实测一张白底黑字图片,把白色变透明后,统计边缘仍可见的浅色像素:颜色范围 32、柔和度 0 时有 1255 个;范围调到 80、柔和度 60 后降到 755,少了约四成,但不会归零。原因是黑字边缘有大量灰色抗锯齿像素,它们离白色和黑色都不近,换色工具无法判断该保留多少。

  • 纯色底的 Logo、图标:变透明效果好,适度调大柔和度即可。
  • 白纸上的签名、手写字:边缘灰度复杂,用专门提取笔迹的方法更干净,见签名怎么去白底。
  • 绿幕人像:大面积背景能去掉,发丝和衣服上的绿色反光处理有限。
  • 证件照换底色:只处理背景时,去底色工具会自动从四角识别底色,步骤更少,见证件照底色怎么换。

哪些情况不适合用图片换色?

目标颜色与画面其他部分接近、或者只想改局部时,换色工具的结果很难令人满意。它按颜色工作,没有选区,这是能力边界,不是参数没调好。

目标与环境同色系

红杯配红木桌、肤色配米色墙,范围怎么调都会误伤一方。

渐变和多色图案

一次只换一种颜色,渐变两端差得远,换完常出现断层。

只改画面一角

工具不能框选局部,同色的其他区域会一起变,先裁出局部再处理。

另外,GIF 和 WebP 动图换色会丢失动画,暂不支持;单张图片超过约 5000 万像素时,需要先缩小尺寸。颜色分得开的素材——纯色图标、色块分明的插画、衣服与背景反差明显的商品图——才是换色工具省事的场景,直接去图片换色点一下要换的颜色就能开始。

常见问题

图片换颜色会把整张图里的同色都换掉吗?
会。换色按颜色差异判断,不识别杯子、衣服这些物体,画面里所有落在颜色范围内的像素都会一起变。避免误伤的办法是把颜色范围调小,或者先把要处理的部分裁出来单独换色,再拼回去。
颜色范围调多少合适?
先用默认值 32。阴影里还残留旧颜色就每次加 8,画面其他地方开始变色就退回上一档。实测红色咖啡杯照片在 32 时杯身已经换全,但木桌已经出现蓝色条纹,说明这张图的合理区间只有 16~32。
「保留原有明暗纹理」该开还是该关?
照片、衣服、商品这类有光影的素材建议开启,换色后亮部仍亮、暗部仍暗;纯色 Logo、图标和文字建议关闭,直接填成同一个新颜色。实测关闭后杯身亮度标准差从 25.6 变成 0,立体感会完全消失。
Logo 换颜色后边缘有一圈原来的颜色怎么办?
多半是 JPG 压缩在边缘留下的杂色。把颜色范围调到 48~64 再看;仍有残边时,尽量找 PNG、SVG 原始文件来换色。边缘的抗锯齿过渡像素本来就是新旧颜色的混合,留下一圈很淡的过渡属于正常现象。
怎么把图片里的某个颜色变透明?
取样后在「换成」里选变透明,再用颜色范围控制相近颜色一起透明的程度。JPG 不支持透明,结果会保存为 PNG。白底黑字这类反差很大的素材边缘会留一圈浅色,需要干净的签名或印章时,改用签名抠图或印章提取。
能只给衣服换颜色,不动背景吗?
衣服颜色和背景明显不同时可以直接换。两者颜色接近时,换色工具无法区分,因为它不能框选局部;这种情况需要先抠出衣服,或在专业修图软件里用选区限定范围。
图片换色会上传图片吗?
在小鹿 Image 不会。取色、换色和导出都在浏览器本地完成,图片不经过服务器。单张图片的上限约 5000 万像素,超出时先缩小尺寸再处理。

动手试试

看完直接动手——用图片换色工具,在浏览器本地处理,图片不上传、免费无需注册。

参考资料

个人开发者「小鹿」维护,更新于 2026-10-31。工具和内容会持续复查与修正。