位置: IT常识 - 正文

不借助 Javascript,利用 SVG 快速构建马赛克效果(不借助的英文)

编辑:rootadmin
之前在公众号转发了好友 Vajoy 的一篇文章 -- 巧用 CSS 把图片马赛克风格化。 核心是利用了 CSS 中一个很有意思的属性 -- image-rendering,它可以用于设置图像缩放算法。 何为 image-rendering? CSS 属性 image-rendering 用于设置图像 ...

推荐整理分享不借助 Javascript,利用 SVG 快速构建马赛克效果(不借助的英文),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:不借助工具怎么画圆,不借助任何器械工具,人类徒手潜水的深度记录,不借助的英文,不借助工具怎么画圆,不借助任何工具怎么画圆,不借助圆规怎么画圆,不借助其他变量交换两个变量的值,不借助英语,内容如对您有帮助,希望把文章链接给更多的朋友!

之前在公众号转发了好友 Vajoy 的一篇文章 -- 巧用 CSS 把图片马赛克风格化。

核心是利用了 CSS 中一个很有意思的属性 -- image-rendering,它可以用于设置图像缩放算法。

何为 image-rendering?

CSS 属性 image-rendering 用于设置图像缩放算法。它适用于元素本身,适用于元素其他属性中的图像,也应用于子元素。

语法比较简单:

{ image-rendering: auto; // 默认值,使用双线性(bilinear)算法进行重新采样(高质量) image-rendering: smooth; // 使用能最大化图像客观观感的算法来缩放图像。让照片更“平滑” image-rendering: crisp-edges; // 使用可有效保留对比度和图像中的边缘的算法来对图像进行缩放 image-rendering: pixelated; // 放大图像时, 使用最近邻居算法,因此,图像看着像是由大块像素组成的}

其中,image-rendering: pixelated 比较有意思,可以将一张低精度图像马赛克化。

譬如,假设我们有一张 300px x 300px 的图像,我们让他转换成 30px x 30px:

我们再把失真后的图片,放大到 300px x 300px:

在此基础上,我们给这张图片设置 image-rendering: pixelated,就能得到一张被马赛克化图片:

<img src="?30x30" />img { width: 300px; height: 300px; image-rendering: pixelated}

image-rendering: pixelated 实现马赛克效果的局限性

OK,那么为什么需要先缩小再放大,然后才运用 image-rendering: pixelated 呢?我们来做个对比,直接给原图设置 image-rendering: pixelated:

直接给原图设置 image-rendering: pixelated 只会让图片变得更加有锯齿感,而不会直接产生马赛克的效果。

这也和 image-rendering: pixelated 的描述吻合,放大图像时, 使用最近邻居算法,因此,图像看着像是由大块像素组成的。

不借助 Javascript,利用 SVG 快速构建马赛克效果(不借助的英文)

我们只有基于放大模糊后的图像,才能利用 image-rendering: pixelated 得到一张被马赛克的图片!

利用 CSS 再图片缩小后再放大?

那么,假设我们只有一张清晰的原图,又想利用 CSS 得到一个马赛克效果,可行么?顺着这个思路,我们可以想到:

能否利用 CSS 将图片缩小后再放大,再运用 image-rendering: pixelated 呢?

不行。WEB 上的图片像极了 Photoshop 里的智能对象 —— 你可以任意修改它的尺寸(例如放大很多倍让其变模糊),但最后再把图片改回原本的大小时,图片会变回原来的样子(没有任何失真)。

所以,要想在只有一张原图的情况下,得到一张模糊的图像,就不得不求助于 Canvas,这样一来就稍显麻烦了。我们只是想要个马赛克效果而已。

SVG 滤镜叠加实现马赛克效果

这就可以引出今天的主角了,SVG 滤镜,使用几层 SVG 滤镜的叠加,其实可以非常轻松的实现一个马赛克效果滤镜。

并且,SVG 滤镜可以通过 CSS filter,轻松的引入。

代码其实也非常的简单,SVG 定义一个滤镜,利用多层滤镜的叠加效果实现一个马赛克效果,然后,通过 CSS filter 引入,可以运用在任何元素上:

<img src="" alt=""><svg> <filter id="pixelate" x="0" y="0"> <feFlood x="4" y="4" height="2" width="2"/> <feComposite width="8" height="8"/> <feTile result="a"/> <feComposite in="SourceGraphic" in2="a" operator="in"/> <feMorphology operator="dilate"radius="5"/> </filter></svg>img { width: 300px; height: 300px; filter: url(#pixelate);}

这样,我们就得到了一个马赛克效果:

如果你只是想使用这个效果,你甚至不需要去理解整个 SVG <filter> 到底做了什么事情,当然,如果你是一个一问到底的人,那么需要有一定的 SVG 基础,建议可以看看我的这几篇关于 SVG 滤镜的介绍:

有意思!强大的 SVG 滤镜有意思!不规则边框的生成方案震惊!巧用 SVG 滤镜还能制作表情包?CSS/SVG 实现马赛克的局限性

当然,CSS/SVG 滤镜实现马赛克的局限性在于,如果你是不想给用户看到原图的,那么在客户端直接使用这个方式相当于直接把原图的暴露了。

因为 CSS/SVG 滤镜的方式是在前端进行图片马赛克化的,而且需要原图。

当然,利用上述的两个实现图片马赛克技巧,我们还是可以用于制作一些简单的交互效果的,像是这样:

上述的 DEMO 和 SVG 滤镜的全部代码,你都可以在这两个 DEMO 中找到:

CodePen Demo - image-rendering pixelated applicationSVG Pixel Filter最后

好了,本文到此结束,希望对你有帮助 ?

更多精彩 CSS 技术文章汇总在我的 Github -- iCSS ,持续更新,欢迎点个 star 订阅收藏。

如果还有什么疑问或者建议,可以多多交流,原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。

本文链接地址:https://www.jiuchutong.com/zhishi/313052.html 转载请保留说明!

上一篇:【已解决】移动端页面手势滑动触发touch 事件时,在左右上下部分出现空白部分的问题(我想问一下移动)

下一篇:织梦系统基本参数里新变量删除方法(织梦程序)

  • 浅谈怎样做好网店推广(如何做好一个网名)

    浅谈怎样做好网店推广(如何做好一个网名)

  • 携号转网怎么发短信查询(携号转网怎么发送)

    携号转网怎么发短信查询(携号转网怎么发送)

  • iqooz1x有nfc功能吗

    iqooz1x有nfc功能吗

  • qq特别关心震动怎么没有了(qq特别关心震动和普通一样)

    qq特别关心震动怎么没有了(qq特别关心震动和普通一样)

  • 小米的隐藏应用在哪里(小米的隐藏应用怎么没了)

    小米的隐藏应用在哪里(小米的隐藏应用怎么没了)

  • 协议主要由三部分组成(协议的三部分)

    协议主要由三部分组成(协议的三部分)

  • 干电池内阻一般多大(干电池在使用过程中,内阻如何变化)

    干电池内阻一般多大(干电池在使用过程中,内阻如何变化)

  • 路由器可以不用线连接光猫吗(路由器可以不用宽带账号密码吗?)

    路由器可以不用线连接光猫吗(路由器可以不用宽带账号密码吗?)

  • 苹果手机一直是静音模式怎么办(苹果手机一直是白苹果状态但是开不了机)

    苹果手机一直是静音模式怎么办(苹果手机一直是白苹果状态但是开不了机)

  • 荣耀20pro怎么开机(荣耀20pro怎么开红外线)

    荣耀20pro怎么开机(荣耀20pro怎么开红外线)

  • quad-core处理器是什么(处理器quadcore-r16)

    quad-core处理器是什么(处理器quadcore-r16)

  • 关闭共同关注是什么意思(关闭共同关注功能别人能否看到我的关注)

    关闭共同关注是什么意思(关闭共同关注功能别人能否看到我的关注)

  • y7000p16g是几根内存条(y7000p16g内存够用吗)

    y7000p16g是几根内存条(y7000p16g内存够用吗)

  • 微型计算机主机由什么组成(微型计算机主机的硬件除cpu外还有什么)

    微型计算机主机由什么组成(微型计算机主机的硬件除cpu外还有什么)

  • nova5i有交通卡功能吗(华为nova5怎么打开nfc设置公交卡)

    nova5i有交通卡功能吗(华为nova5怎么打开nfc设置公交卡)

  • 小米9步数怎么开启(小米9手机步数在哪设置)

    小米9步数怎么开启(小米9手机步数在哪设置)

  • 怎样去掉wps表格线(怎样去掉wps表格里的回车符号)

    怎样去掉wps表格线(怎样去掉wps表格里的回车符号)

  • 手机的小孔有什么作用(手机小孔有什么功能)

    手机的小孔有什么作用(手机小孔有什么功能)

  • realmex青春版有nfc吗(realmex青春版有开盖弹窗吗)

    realmex青春版有nfc吗(realmex青春版有开盖弹窗吗)

  • iphone8通话不断网设置(iphone8打电话总是断)

    iphone8通话不断网设置(iphone8打电话总是断)

  • 华为黑白模式怎么关闭(华为黑白模式怎么设置)

    华为黑白模式怎么关闭(华为黑白模式怎么设置)

  • p30如何更改摄像像素(p30pro摄像头怎么设置像素高)

    p30如何更改摄像像素(p30pro摄像头怎么设置像素高)

  • 诺基亚触屏手机有哪些(诺基亚触屏手机 老款)

    诺基亚触屏手机有哪些(诺基亚触屏手机 老款)

  • 有什么办法可以看电脑系统?电脑系统怎么看?(有什么办法可以快速减肥)

    有什么办法可以看电脑系统?电脑系统怎么看?(有什么办法可以快速减肥)

  • 无需命令行,这款小工具可以帮你在 Win11 上傻瓜式安装安卓 App(不用命令打开组策略)

    无需命令行,这款小工具可以帮你在 Win11 上傻瓜式安装安卓 App(不用命令打开组策略)

  • 月末计提无形资产的折旧
  • 兼职人员账务处理
  • 工程会计和工业会计进销项区别是什么
  • 已抵扣发票冲红会计分录
  • 一般纳税人可以开1%的发票吗
  • 母公司为子公司担保需要股东会决议吗
  • 增值税进项抵扣怎么做账
  • 电子记账软件出纳帐
  • 适用会计制度备注怎么填?
  • 存货入账价值计算公式
  • 计件工资的计算
  • 由于疏忽装修费用之前没有摊销应如何处理
  • 关于固定资产的企业案例
  • 工会经费按上年工资总额还是本年
  • 上报汇总是什么时候
  • 如何区分境内所有银行卡
  • 企业预算报表如何做
  • 认证过的发票
  • 银行承兑贴现到哪里去了
  • 购入设备超过多少才允许一次性扣除
  • 委托贷款合同效力
  • 注册资本金认缴制
  • 季度企业所得税可以弥补以前年度亏损吗
  • 个人帮公司买东西怎么报销
  • 公司净资产怎么算出来的
  • 表彰比例如何确定
  • 如何解决win7系统蓝牙接收模块影响电脑蓝屏
  • 会计凭证应该怎么写
  • 增值税税率为零的有哪些项目
  • kprcycleaner.exe是什么
  • 公司资金被税务部门冻结
  • 简述php的概念和特点
  • vue split函数
  • 收到利息收入计入什么科目
  • 进口商品会计分录怎么写
  • 需要计提坏账准备吗
  • 已认证未抵扣完的进项
  • 工业企业发生的各项费用
  • 什么是子公司 和控股的区别
  • 坏账的计算公式
  • sqlserver2005属于
  • 建筑工程租赁费属于什么费用
  • 城建税退税流程
  • 旅行社开具的发票
  • 商业保险如何做伤残鉴定的
  • 公司实行全成本核算工资怎么算
  • 现金支付有借款利息吗
  • 库存股 注销
  • 房屋租赁费属于变动成本吗
  • 融资租赁后期收入怎么算
  • 本票包括哪些
  • 上期留抵税额可以留多久
  • 帮别人加工需要什么手续
  • 总部结算什么意思
  • mysql中存储引擎
  • win2003启动无法显示桌面
  • rpm包安装的apache可以如何启动
  • 如何设置电脑从d盘启动
  • QQPCTray.exe是什么进程 QQPCTray.exe文件介绍
  • win7无法访问局域网电脑
  • lsaass.exe
  • win7如何设置屏幕不黑屏
  • win10无法回退到以前的版本怎么办
  • linux windows转linux
  • win8系统笔记本怎么恢复出厂设置
  • dos常用命令与批处理文件
  • bat ping批处理
  • dos批处理实例
  • javascript例题
  • nodejs mocha
  • 批处理程序删除文件夹中临时文件
  • javascript 代码
  • unity3d 脚本
  • android xml文件有哪几种布局方式
  • android系统虚拟机
  • js获取父窗口
  • js 进阶
  • linux0.11编译
  • 河南省地方税务局房产税管理办法
  • 国家税务局通用机打发票查询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设