JavaScript Canvas API 可通过 getImageData() 获取像素数组并实时调整亮度与对比度:亮度为 RGB 同加偏移量并截断;对比度用 (value−128)×factor+128 公式计算,需确保图像跨域安全且已加载。
JavaScript 中通过 Canvas API 可以直接操作图像像素,实现亮度与对比度的实时调整,无需后端或第三方库。
使用
ctx.getImageData() 读取画布上图像的原始 RGBA 像素数组。该数组是按行优先排列的一维 Uint8ClampedArray,每 4 个元素代表一个像素(R、G、B、A)。
crossOrigin="anonymous")getImageData(0, 0, width, height) 获取全部像素亮度调整本质是对 R、G、B 三个通道统一加减偏移量。偏移量范围通常为 -255 到 +255,超出 [0, 255] 时自动截断(Uint8ClampedArray 自动处理)。
r += brightness; g += brightness; b += brightness;
ImageData 和 brightness 参数并返回新 ImageData对比度调整基于公式:value = (value - 128) * factor + 128,其中 factor > 1 增强对比,0
修改完像素后,用 ctx.putImageData() 将新数据渲染到画布。为防止模糊或缩放失真,建议:
canvas.width = img.naturalWidth 等)ctx.clearRect(0,0,w,h))后再绘制canvas.toDataURL('image/png') 导出 base64