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

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

  • iqoo8可以遥控空调吗(iqoo手机能不能遥控空调)

    iqoo8可以遥控空调吗(iqoo手机能不能遥控空调)

  • 路由器24小时开着费电吗(路由器24小时开机好吗)

    路由器24小时开着费电吗(路由器24小时开机好吗)

  • macbook怎么恢复出厂设置(macbook怎么恢复废纸篓)

    macbook怎么恢复出厂设置(macbook怎么恢复废纸篓)

  • 微信怎么拉非好友进群(微信怎么拉非好友进群聊)

    微信怎么拉非好友进群(微信怎么拉非好友进群聊)

  • ipad版腾讯会议怎么共享屏幕(ipad版腾讯会议怎么共享屏幕ppt)

    ipad版腾讯会议怎么共享屏幕(ipad版腾讯会议怎么共享屏幕ppt)

  • 发货了店铺就关闭了(发货了店铺就关闭了系统会自动退款吗)

    发货了店铺就关闭了(发货了店铺就关闭了系统会自动退款吗)

  • 华为音响小艺怎么连接(华为音响小艺怎么更换wifi)

    华为音响小艺怎么连接(华为音响小艺怎么更换wifi)

  • 抖音怎么提现(抖音怎么提现钱到微信)

    抖音怎么提现(抖音怎么提现钱到微信)

  • 高帧率模式会更流畅吗(高帧率模式耗电吗)

    高帧率模式会更流畅吗(高帧率模式耗电吗)

  • win10卡顿嘟嘟嘟响声(电脑突然卡了然后嘟嘟嘟嘟嘟嘟)

    win10卡顿嘟嘟嘟响声(电脑突然卡了然后嘟嘟嘟嘟嘟嘟)

  • 梨喔喔怎么注销(梨喔喔学生认证有害吗)

    梨喔喔怎么注销(梨喔喔学生认证有害吗)

  • 淘宝超时关闭啥意思(淘宝超时关闭但已付款了)

    淘宝超时关闭啥意思(淘宝超时关闭但已付款了)

  • 平板怎么插无线网卡(平板怎么加入手机无线)

    平板怎么插无线网卡(平板怎么加入手机无线)

  • iphonexr是无线耳机吗(苹果xr是无线耳机吗)

    iphonexr是无线耳机吗(苹果xr是无线耳机吗)

  • 充电宝6000毫安可以充几次(充电宝6000毫安够用吗)

    充电宝6000毫安可以充几次(充电宝6000毫安够用吗)

  • 朋友圈点赞怎么显示头像(朋友圈点赞怎么不让共同好友看见)

    朋友圈点赞怎么显示头像(朋友圈点赞怎么不让共同好友看见)

  • 香山在哪里个省(香山位于哪个省市)

    香山在哪里个省(香山位于哪个省市)

  • 小米手环怎么判断睡眠(小米手环怎么判断无氧运动)

    小米手环怎么判断睡眠(小米手环怎么判断无氧运动)

  •  word文档如何不被修改(word文档如何不改写)

    word文档如何不被修改(word文档如何不改写)

  • vivoy93的简易桌面怎么设置(vivoy93手机的简易桌面怎么设置)

    vivoy93的简易桌面怎么设置(vivoy93手机的简易桌面怎么设置)

  • 如何查手机出厂时间(如何查手机出厂日期OPPO)

    如何查手机出厂时间(如何查手机出厂日期OPPO)

  • aptio setup解决步骤(aptio setup解决步骤 2017)

    aptio setup解决步骤(aptio setup解决步骤 2017)

  • 为什么打不通对方电话(为什么打不通对方的号码)

    为什么打不通对方电话(为什么打不通对方的号码)

  • Vue中实现自定义excel下载(vue自定义dialog)

    Vue中实现自定义excel下载(vue自定义dialog)

  • 所得税是什么意思
  • 工程施工企业收入和成本需不需要设置按项目核算
  • 承租承包经营所得
  • 打印的电子发票需要盖章么
  • 成品油认证步骤
  • 利润表管理费用怎么算
  • 公司代扣社保为什么是400多余的钱
  • 进项税当月申报怎么申报
  • 工程设计企业符合增值税抵减政策吗
  • 购进原材料验收入库,贷款商业汇票结算
  • 企业职工支付条例
  • 企业员工用自己手机发送工作
  • 增值税专用发票有效期是多长时间
  • 二手房房产税税率
  • 兼职取酬案例剖析
  • 当前中国有什么企业在国外
  • 公司给个人买的意外险个人有权利查吗
  • 土地出让金怎么入账
  • 外地培训产生的费用
  • 车辆租赁怎么报税做账
  • 如何网签三方协议合同
  • 经营所得的含义
  • win10桌面网络图标怎么调出来
  • win11耳机插电脑没声音怎么办
  • 账面价值,账面净值,账面余额
  • 方正电脑如何做系统
  • 收据入账会计分录
  • wcu.exe是什么
  • win7系统中怎样没有智能卡这一选项
  • 微软手机
  • 新电商行业
  • 纳税人逾期申报
  • 什么是增值税差额征税政策的小规模纳税人
  • php之间传递数据
  • 城市维护建设税减免税优惠政策
  • 税局代开专票已扣款还需季度增值税申报吗
  • 小规模申报增值税减免税申报明细表
  • 应交增值税一般是多少
  • 法人可以开个人票会怎么样
  • php7安装mysqli扩展
  • 个人劳务报酬所得税税率表
  • 有限合伙企业如何报税
  • 注册资本认缴与实缴有什么区别
  • 土地违约金的法律规定
  • 法院强制执行根本没用
  • 记账凭证错误要重开吗
  • 出差补贴如何账务处理
  • 购买用品开专票怎么入账
  • 增值税专用发票电子版
  • 冲回上年度费用分录
  • 一般纳税人增值税优惠政策2023
  • 工会筹备金记什么科目
  • 销售方开具的红字专票购买方在税控盘要怎么操作
  • 什么是成本费用,什么是经营成本
  • 做内账需要什么资料
  • oracle和sqlserver的区别
  • mysql5.7压缩包
  • win7系统开机屏幕出现一条蓝色横杠闪烁
  • mac系统播放器声音小
  • fpd文件是什么意思
  • windows8消费预览版中图片密码使用教程
  • pavprsrv.exe - pavprsrv是什么进程 有什么用
  • linux系统设置
  • 开快打开
  • 安卓音游吃音
  • unity-3d
  • 简述图像批处理的操作过程
  • unity用lua开发
  • python 获取网页上文件地址
  • shaders initialized
  • unity 人物控制
  • JavaScript的History API使搜索引擎抓取AJAX内容
  • jquery获取值的几种方法
  • 加油的电子发票在手机哪里
  • 为什么电子发票没有监制章
  • 江苏社保退工办理流程
  • 手表不贵比较好的品牌
  • 锦江区税务局搬迁新地址
  • 未办理税务登记取得专票抵扣
  • 陕西电子发票开票流程?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设