网站变灰这个效果很常见,在我这里暂时没有找到最优解决方式,

先把今天的研究结果记录一下。

第一种方案 :

对所有静态资源文件进行灰度处理,得到新一个资源目录,例如asset_ori 原始资源    asset_gray灰度资源,将文件映射指向灰度资源

这里面包括对img以及css中所有颜色属性的处理,css里面最好不要有red,green这种字母颜色,但是还是会有#xyz,rgb(x,y,z),rgba(x,y,z,o)

灰度算法

临时变量=(原红色值*30+原绿色值*59+原蓝色值*11)/100; 
原红色值=临时变量;
原绿色值=临时变量;
原蓝色值=临时变量;

第二种方案 CSS方案:

针对IE10以下    filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);

针对IE10    不支持filter

针对chrome    filter:grayscale(1);

针对firefox    filter: url(desaturate.svg#grayscale);  利用svg,经测试,发现只能运用在img元素上,其他元素上运用直接不可见了

针对Opera     暂未找

第三种方案 js方案

不说性能,先说原理,利用canvas对图片进行灰度处理,得到base64的新图像数据,可以直接设置在img的src或者element的backgroud-image上。

为了达到这个目的,可以在样式中预留出需要重新编译的部分,比如 .add.gray,  .upload.gray,使用js将里面的background-image重新设置

这个方案最终接近于第一种方案,只不过处理的动作和时间放在了客户端

三种方案比较

第一种是完美的,可以写个通用程序处理,工作量也不大,但是对于海量图片,这磁盘消耗就X2了,如果再有CDN,那消耗就更大了

第二种很便捷,不完美,有浏览器兼容问题。

第三种看起来很美,能完美处理,处理动作和时间都放在了客户端,只是优化的问题还需要再考虑

综合起来

我倾向于三种综合处理,根据场景,1||1+2||1+2+3,尽可能地利用原生CSS的能力

最新文章

  1. jQuery.Ajax IE8 无效(CORS)
  2. 如何配置Linux系统的网络IP地址
  3. C#之接口
  4. java中scanner类的用法
  5. Java初学随笔
  6. @RestController注解下返回到jsp视图页面
  7. 从源码角度看finish()方法的执行流程
  8. 随机数产生random
  9. DP Hrbust1186青蛙过河
  10. HDU 1028 Ignatius and the Princess III (递归,dp)
  11. 域名地址默认跳转到www(301重定向)
  12. Windows环境下用C#编程将文件上传至阿里云OSS笔记
  13. 查询PO的预付款剩余金额
  14. 如何禁止使用teamviwer的使用
  15. hihocoder1391 Country
  16. vue项目打包笔记
  17. python基础之作业1---用户登录
  18. Dangerous well
  19. 数以亿计运行PHP的网站即将面临严重的安全风险
  20. 『计算机视觉』Mask-RCNN

热门文章

  1. tmpwatch命令清除旧文件
  2. linux配置定时任务cron/定时服务与自启动
  3. Linux系统安装JDK1.8
  4. bootStrap小结2
  5. 【树形DP】BZOJ 1131 Sta
  6. k8s-获取kuboardtoken
  7. flutter——android报错建议Suggestion: add 'tools:replace="android:label"'
  8. Helium文档14-WebUI自动化-hover鼠标悬浮
  9. buuctf-misc 菜刀666
  10. 通过maven创建springboot项目