使用方法
- 点「选择图片」挑一张本地图片,或直接使用页面打开时自带的演示渐变图。图片不会上传,只在本机浏览器里处理。
- 想让结果更亮或更暗,拖动「亮度微调」滑块,范围 −100 到 100,默认 0。每拖动一下都会按当前灰度重新叠加亮度并即时刷新。
- 选好「导出格式」:要无损就用 PNG;想压体积就选 JPEG,质量由下方质量滑块控制。点重新灰度化可随时按新参数重算。
- 满意后点下载结果,浏览器会把灰度画布导出成对应格式的图片存到你本地。整个过程不调用任何服务器接口。
这个转换图片转灰度工具能解决什么问题
一是快速去色做素材。做 PPT、打印稿、印章底图时经常需要纯灰阶图,本工具一键把彩色压成灰度,比在修图软件里找菜单更快。
二是统一视觉比重。彩色容易让某一块颜色抢眼,转成灰度后能更客观地看构图明暗;设计师常用这招检查对比是否足够。
三是减小体积与兼容。灰度图信息量比彩色少,配合 JPEG 导出能明显变小;老设备、单色屏或某些打印流程也只认灰阶。
本页不做这些事:它不调色相、不裁切、不加水印、不做二值化(纯黑纯白),也不做锐化或降噪;这些请改用图片工具里的调色、裁剪、压缩等专门页面。
灰度算法原理与技术内核
本转换图片转灰度工具对每一个像素独立计算一个灰度值,公式是 灰度 = 0.299 × R + 0.587 × G + 0.114 × B,算完把得到的数字同时写回红、绿、蓝三个通道,像素就变成灰色。之所以三个通道填同一个数,是因为当 R=G=B 时人眼看到的就是中性灰,没有残留颜色。
这一步的技术内核可以拆成六个具体问题:
- 调用了哪个函数与公式:逐像素用
0.299*R + 0.587*G + 0.114*B求值,再用Math.round取整到 0–255 整数;系数来自 ITU-R BT.601 的亮度(luma)权重,是标清电视时代定下的标准。 - 关键参数为什么取这三个系数:人眼对绿色最敏感、对蓝色最不敏感,所以 G 的权重 0.587 最大、B 的权重 0.114 最小。若改成简单平均 (R+G+B)/3,绿色和蓝色的视觉亮度会被错估,灰阶看起来会偏亮或偏暗。
- 遵循哪个标准:系数取自 BT.601(亦称 Rec. 601)的 luma 定义;高清与超高清另有 BT.709、BT.2100 权重,但本工具面向普通图片去色,沿用最通用、兼容性最好的 601 系数。
- 输入经过怎样的转换得到输出:先
getImageData取出每个像素的 R、G、B(和透明度 A),套公式算灰度 g,再把该像素写成 (g, g, g, A);亮度微调是在 g 上再叠加一个 −100 到 100 的整数,最后用putImageData写回画布。 - 边界与阈值:每个通道是 8 位,合法范围 0–255;叠加亮度后若低于 0 按 0 计、高于 255 按 255 计,避免出现非法颜色值。画布像素总量受浏览器限制,超大图片建议先缩小再处理;公式只有整数乘法与加法,不存在浮点累积误差导致的颜色漂移。
- 常见误用的正确解释:第一,「灰度」不是「黑白二值」,本工具保留 256 级灰阶而不是只留纯黑纯白;第二,JPEG 是有损格式,反复导出会慢慢劣化,需要反复编辑请改用 PNG;第三,带透明度(A 通道)的 PNG 转灰度后透明区域仍透明,不会被填成白色或黑色。
完整示例(数值为真实计算结果)
- 示例一(纯红):像素 (255, 0, 0) → 0.299×255 + 0.587×0 + 0.114×0 = 76.245,取整为 76。红色偏暗,符合人眼对红不敏感的直觉。
- 示例二(纯绿):像素 (0, 255, 0) → 0.587×255 = 149.685,取整为 150。绿色权重最大,所以同样亮度下绿色灰度最高。
- 示例三(纯蓝):像素 (0, 0, 255) → 0.114×255 = 29.07,取整为 29。蓝色灰度最低,看起来最暗。
- 示例四(中灰):像素 (128, 128, 128) → 各通道相等,公式结果就是 128,灰度前后完全一致,说明中性灰不会被改变。
- 示例五(演示渐变):打开页面自带的六色块渐变,逐像素灰度后平均灰度约 130,结果区会直接报出这个数字。
输入范围与像素灰度对照表
下表给出十二种典型颜色的 RGB 与按 BT.601 算出的灰度值(亮度微调为 0),前 12 行直接显示,点「加载更多」展开剩余两行。可导出 CSV(带 BOM)或 JSON(不带 BOM),也可一键复制 TSV。
| 颜色 | RGB | 灰度值(0–255) |
|---|---|---|
| 纯红 | 255,0,0 | 76 |
| 纯绿 | 0,255,0 | 150 |
| 纯蓝 | 0,0,255 | 29 |
| 白 | 255,255,255 | 255 |
| 黑 | 0,0,0 | 0 |
| 黄 | 255,255,0 | 226 |
| 青 | 0,255,255 | 179 |
| 品红 | 255,0,255 | 105 |
| 中灰 | 128,128,128 | 128 |
| 棕红 | 192,64,32 | 99 |
| 天蓝 | 64,128,200 | 117 |
| 橄榄绿 | 100,150,75 | 127 |
| 橘粉 | 200,150,100 | 159 |
| 蓝紫 | 50,50,200 | 67 |
边界、精度与常见误用
- 只能处理图片:选中的文件若不是图片类型,本工具会用红字提示「只能处理图片文件(jpg、png、webp 等)」,不会把乱码当像素去算。
- 亮度边界:滑块限定 −100 到 100、步进 1;叠加到灰度后超出 0–255 的部分会被夹到边界,所以再亮的图也不会出现非法颜色值。
- 格式选择:选 JPEG 时按质量滑块导出(默认 92);选 PNG 时质量滑块不参与,因为 PNG 本身无损。需要反复编辑请保留 PNG。
- 透明度保留:带 Alpha 通道的 PNG,转灰度后透明区依旧透明,不会凭空填白或填黑;若你要纯白底,请先在原图垫一层白底再上传。
- 超大图限制:浏览器对单张画布像素总量有上限,特别大的图直接处理可能失败;遇到这种情况请先用图片压缩或尺寸调整工具缩小,再回来转灰度。
- 仅本地处理:本转换图片转灰度从读取文件到导出结果都在本机完成,页面不发起任何网络请求,图片不会离开你的设备。
常见问题
为什么转完的灰色和我在别的软件里看到的不太一样?
不同软件处理转换图片转灰度时用的亮度系数不同:本工具用 BT.601 的 0.299/0.587/0.114,而高清视频常用 BT.709(绿权重更高)。同一张图两种口径会有几级灰的差别,都是「正确」的,只是标准不同。
我还没选图片就有图了,这是我的照片吗?
不是。页面打开时自带一张六色块演示渐变,用来让你立刻看到灰度效果;一旦你选择自己的图片,演示图会被替换,原图不会上传也不会被保存。
转灰度后颜色为什么没完全消失?
灰度图保留 256 级灰阶而不是纯黑纯白,所以你会看到深浅不同的灰,这是正常且预期的;如果你想要纯黑白两色,那是「二值化」而不是「灰度」,本工具不做二值化。
JPEG 和 PNG 该选哪个?
只做一次性去色或要保留最多细节,选 PNG(无损);要发微信、塞进网页、追求小体积,选 JPEG 并把质量调到 80–92 之间通常够用。反复编辑务必用 PNG,避免一次次有损压缩。
亮度微调拉到 +100 后有些地方变成纯白?
这是边界裁剪导致的:原本灰度就高的像素加上 100 会超过 255,被夹到 255 即纯白。属正常行为;想保留层次就把滑块往回拉一些。
带透明背景的 Logo 转完为什么会出问题?
透明区域转灰度后仍透明,显示成什么颜色取决于你把它放在什么背景上。若要白底灰图,请先在原图垫白底再上传,本工具不会擅自填充背景。
导出的 CSV 在 Excel 里中文乱码怎么办?
本页 CSV 已在开头写入 UTF-8 的 BOM,正常用 Excel 打开中文不会乱码;纯文本编辑器开头看到几个乱码字符是 BOM 本身,属正常现象,不影响数据。
我的图片会被上传或保存吗?
不会。从读取到导出全部在浏览器本地完成,不调用任何服务器接口,刷新页面后内存里的图片数据即释放,不会留下副本。