CSS filter 属性支持 grayscale()、sepia()、blur()、contrast()、brightness()、saturate()、hue-rotate() 等函数,可链式组合且顺序影响结果;但无法实现高光/阴影分离、胶片颗粒或局部模糊等像素级控制,此类需求须借助 canvas getImageData 手动处理。
直接用
属性就能实现大多数常见滤镜效果,但真要控制高光/阴影分离、胶片颗粒或局部模糊,必须进
拿像素手动算——CSS 只是快捷入口,不是万能开关。
filter 属性能做什么、不能做什么
CSS
是最轻量的方案,支持
、
、
、
、
、
、
等函数,还能链式组合:
顺序影响结果:
和
渲染不同
不是滤镜,它不感知图像内容,只在元素外框加投影,别指望它模拟浮雕或晕影
加
+
能凑出老照片感,但无法还原褪色偏移或青橙分离
iOS Safari 对
支持不稳定,
设非 1 值可能直接失效
canvas getImageData 是唯一可控的像素级入口
当你要做灰度加权转换、通道非线性映射、颗粒叠加或方向性边缘增强,
是绕不开的起点:
必须等图片真正绘制完成再调用:
是
,每 4 个值一组:R、G、B、A;别忘了最后设
,否则透明区域漏底
复古滤镜关键不在均值,而在分段处理:红通道中灰(80–180)×1.2,蓝通道暗部(<60)微提 +5,绿通道整体压低至 ×0.75
浮雕不是简单减邻域,推荐右下差分:
,再映射到 0–255 同时加到 RGB 三通道
性能敏感场景必须换执行环境
一张 1920×1080 图片,主线程跑完整像素循环很容易卡顿 100ms+,尤其在移动端:
使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
下载
立即学习
“
前端免费学习笔记(深入)
”;
优先用
:Chrome/Firefox 支持,可在 Web Worker 里创建并调用
,完全不阻塞 UI
降级方案用
分块处理,每次只算 50 行,留出空闲时间响应滚动或点击
千万别在
里直接全量处理——图片加载完成 ≠ 渲染就绪,先检查
是否为正数
高斯模糊半径 >10 时,CPU 计算开销陡增,此时服务端生成(如用
)仍是更稳的选择
SVG 滤镜和 WebGL 是特殊需求的备选
可调用内联 SVG 中定义的
或
,适合浮雕、噪点等硬件加速场景,但兼容性和调试成本高:
的
/
建议设为 1,确保卷积中心对齐;
必须开启,否则 PNG 透明区失真
做胶片颗粒时,
应设为 0.002–0.005,不是 0.05;
比默认 1 更自然
WebGL 方案自由度最高,但 fragment shader 在 iOS Safari 上
下系数易被截断,建议显式声明
并实机测试
真正难的不是写出效果,而是让同一张图在 iPhone、MacBook Pro 和安卓中端机上看起来“差不多”——设备色域、PPI、GPU 实现差异都会吃掉你调的那 5% 饱和度
filtercanvasfiltergrayscale()sepia()blur()contrast()brightness()saturate()hue-rotate()blur(2px) contrast(1.2)contrast(1.2) blur(2px)drop-shadow()sepia(0.8)contrast(0.85)blur(0.3px)filter: url(#svg-filter)kernelUnitLengthgetImageData()img.onload = () => { ctx.drawImage(img, 0, 0); const data = ctx.getImageData(0, 0, w, h).data; }dataUint8ClampedArraydata[i+3] = 255gray(x+1,y+1) - gray(x,y)OffscreenCanvasgetContext('2d')requestIdleCallbackimg.onloadcanvas.offsetWidthsharpfilter: url(#id)targetXtargetYpreserveAlpha="true"baseFrequencynumOctaves="2"precision mediump floathighp