位置: 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 事件时,在左右上下部分出现空白部分的问题(我想问一下移动)

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

  • 荣耀x10是双扬声器还是单扬声器(华为荣耀x10双扬声器多少钱)

    荣耀x10是双扬声器还是单扬声器(华为荣耀x10双扬声器多少钱)

  • 快手不能提现怎么回事(快手提现不出来怎么办)

    快手不能提现怎么回事(快手提现不出来怎么办)

  • 直播怎么放音乐(快手直播怎么放音乐)

    直播怎么放音乐(快手直播怎么放音乐)

  • ae安装成功但无法打开(ae安装成功但无法打开0xc000007b)

    ae安装成功但无法打开(ae安装成功但无法打开0xc000007b)

  • iso镜像是什么(什么是iso/gho镜像)

    iso镜像是什么(什么是iso/gho镜像)

  • 花钱推广快手别人知道吗(花钱推广快手别人看得到标志吗)

    花钱推广快手别人知道吗(花钱推广快手别人看得到标志吗)

  • 手机屏幕和机身分离了,可以用胶水吗(手机屏幕和机身分离了还能用吗)

    手机屏幕和机身分离了,可以用胶水吗(手机屏幕和机身分离了还能用吗)

  • 连信号举报了多久恢复(连信号平台)

    连信号举报了多久恢复(连信号平台)

  • 华为手机深色模式怎么设置(华为手机深色模式是什么意思)

    华为手机深色模式怎么设置(华为手机深色模式是什么意思)

  • 为什么switch连不上网(为什么switch连不上蓝牙耳机)

    为什么switch连不上网(为什么switch连不上蓝牙耳机)

  • vivo手机相机打不开黑屏(vivo手机相机打开黑屏)

    vivo手机相机打不开黑屏(vivo手机相机打开黑屏)

  • 钉钉直播回放橙色是什么意思(钉钉直播回放在哪)

    钉钉直播回放橙色是什么意思(钉钉直播回放在哪)

  • 微信公众号怎么设置点赞功能(微信公众号怎么做文章推广)

    微信公众号怎么设置点赞功能(微信公众号怎么做文章推广)

  • 商家同意退款多久到账(商家同意退款多久有效)

    商家同意退款多久到账(商家同意退款多久有效)

  • 手机内屏坏太久有影响吗(手机内屏坏了长时间不修会怎么样)

    手机内屏坏太久有影响吗(手机内屏坏了长时间不修会怎么样)

  • access数据库主要功能(access数据库主要用于)

    access数据库主要功能(access数据库主要用于)

  • ipad2如何删照片(ipad如何删照片的图片)

    ipad2如何删照片(ipad如何删照片的图片)

  • 手机99新什么意思(手机99新是什么)

    手机99新什么意思(手机99新是什么)

  • 虾米音乐怎么下载歌词(虾米音乐怎么下载歌曲)

    虾米音乐怎么下载歌词(虾米音乐怎么下载歌曲)

  • vivo手机手电筒突然不亮了(vivo手机手电筒怎么快捷键打开)

    vivo手机手电筒突然不亮了(vivo手机手电筒怎么快捷键打开)

  • 探探为什么收不到信息(探探为什么收不了验证码)

    探探为什么收不到信息(探探为什么收不了验证码)

  • 手机自动开关机原因是什么(手机自动开关机怎么解决?)

    手机自动开关机原因是什么(手机自动开关机怎么解决?)

  • Mac开机壁纸怎么更改?苹果Mac更换登录界面背景详细教程(macbook设置壁纸后开机变回原样)

    Mac开机壁纸怎么更改?苹果Mac更换登录界面背景详细教程(macbook设置壁纸后开机变回原样)

  • 分配股东利润分录
  • 收入准则范围内
  • 纳税人对所提交信息的什么负责
  • 什么叫发票分割单
  • 银行代扣的社保怎么查询
  • 个人独资企业有章程没有
  • 个人独资企业变更投资人要交税吗
  • 查补以前年度所得税如何填写申报表
  • 成本大于收入可以吗
  • 融资发票是什么
  • 给政府开发票如何处理?
  • 小规模纳税人月超15万季度不超45万
  • 海运费需要代扣代缴吗
  • 当期应税销售收入是含税还是不含税
  • 小规模纳税人的企业所得税怎么算
  • 发票收款人和开票人
  • 保安服务费可以开具专票吗
  • 购买商品成本要支付哪些成本
  • 已付款收货未收到发票会计分录
  • 待摊费用报价变更的会计处理怎么做?
  • 股票质押得到的钱怎么算
  • 未开发票的结算款怎么入账?
  • 长期待摊费用发生当月摊还是次月摊
  • 业务招待费是什么科目
  • 无形资产有哪些摊销方法
  • 如何断开微软账户与电脑的链接
  • iphonexs如何强制关机重启
  • 存货成本要加上税费吗
  • PHP:oci_server_version()的用法_Oracle函数
  • 暂估营业收入会增加吗
  • 电脑老是弹出广告怎么处理
  • 累积带薪缺勤的例题
  • 房屋修理费用
  • 如何判定增值税发票真伪
  • yolov5训练参数说明
  • 实际成本法核算会计分录
  • 税法中实体从旧程序从新什么意思
  • PHP:FrenchToJD()的用法_日历函数
  • 80岁以上老年卡上的钱如何消费
  • php数组怎么定义
  • 销售购置的房产税怎么算
  • 注册公司时认缴和实缴时间怎么填
  • y库数据库
  • thinkphp整合layui
  • /f命令
  • 税控设备抵减增值税必须当月抵减吗
  • 企业从政府取得的非货币资产应该按照什么计量
  • 认缴制下怎样变更法人
  • 公司食堂吃饭没钱怎么办
  • Ficstar Software � Web Data Extraction Tools
  • rust编程指南
  • 房屋租赁需要计提印花税吗
  • 年末未分配利润计算公式
  • 小规模不开票怎么做账
  • 管理费用主要核算哪些内容
  • 驾驶员培训费纳税吗
  • 房地产结转收入的条件
  • 发票勾选认证的时间限制是多久
  • 公司网站维护费用计哪个科目
  • 商品流通企业的含义与特点
  • 电脑开机一直显示xp
  • 任务栏taskbar 教程
  • windows service 2003
  • 电脑bios启动项设置中文
  • linux find命令查找文件名
  • macos桌面
  • angular之ng-template模板加载
  • javascript怎么用
  • django发送请求
  • javascript高级程序设计电子版
  • great 搬运工
  • XRegExp 0.2: Now With Named Capture
  • 安卓手机安装推特
  • js 判断
  • Python运行报错此段代码无法访问
  • 广东省深圳市税占27%,高新技术占15%,各市分别占多少?
  • 诺诺开票软件怎么领用发票
  • 单位医保账号怎么注销掉
  • 河北航天信息技术有限公司官网
  • 北京市注册税务师
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设