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

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

  • 抖音怎么不发布保存视频(抖音怎么不发布保存照片)

    抖音怎么不发布保存视频(抖音怎么不发布保存照片)

  • 苹果13怎么调出虚拟home键(苹果13怎么调出控制中心)

    苹果13怎么调出虚拟home键(苹果13怎么调出控制中心)

  • kiwi浏览器如何安装插件(kiwi浏览器下载)

    kiwi浏览器如何安装插件(kiwi浏览器下载)

  • 华为matebook14麦克风没声音是怎么回事(华为电脑mate book 14麦克风在哪)

    华为matebook14麦克风没声音是怎么回事(华为电脑mate book 14麦克风在哪)

  • 华为如何看应用使用时长(华为如何看应用使用次数)

    华为如何看应用使用时长(华为如何看应用使用次数)

  • 微信静音对方可以听到吗(微信静音对方是不是听不见我说话)

    微信静音对方可以听到吗(微信静音对方是不是听不见我说话)

  • 爱奇艺为什么没有扫码登录了(爱奇艺为什么没有声音电脑)

    爱奇艺为什么没有扫码登录了(爱奇艺为什么没有声音电脑)

  • 小米CC9怎么拍照扫描文字(小米cc9怎么拍照片)

    小米CC9怎么拍照扫描文字(小米cc9怎么拍照片)

  • 苹果xr自拍镜像怎么设置(苹果xr自拍镜像功能能不能调过来)

    苹果xr自拍镜像怎么设置(苹果xr自拍镜像功能能不能调过来)

  • 钉钉是点开才算已读吗(钉钉是点开才算签到吗)

    钉钉是点开才算已读吗(钉钉是点开才算签到吗)

  • ufs3.0读写速度(ufs2.1读写速度)

    ufs3.0读写速度(ufs2.1读写速度)

  • 设计表要定义哪些内容(设计表的结构要考虑哪些问题)

    设计表要定义哪些内容(设计表的结构要考虑哪些问题)

  • qq扩列一直失败怎么解决(qq扩列失败了)

    qq扩列一直失败怎么解决(qq扩列失败了)

  • 微信投诉公众号结果在哪查询(银监会微信投诉公众号)

    微信投诉公众号结果在哪查询(银监会微信投诉公众号)

  • 华为手机有屏幕录制功能吗(华为手机有屏幕使用时间功能吗)

    华为手机有屏幕录制功能吗(华为手机有屏幕使用时间功能吗)

  • 无线网网络拒绝接入什么意思(无线网网络拒绝接入是怎么回事)

    无线网网络拒绝接入什么意思(无线网网络拒绝接入是怎么回事)

  • iphonex绿屏了怎么办(苹果x绿屏了)

    iphonex绿屏了怎么办(苹果x绿屏了)

  • 华为mate30pro微信视频带美颜吗(华为mate30pro微信拍摄模糊)

    华为mate30pro微信视频带美颜吗(华为mate30pro微信拍摄模糊)

  • g2030相当于i几(英特尔g2030相当于i几)

    g2030相当于i几(英特尔g2030相当于i几)

  • 手机8p是什么手机(手机说的8p是什么意思)

    手机8p是什么手机(手机说的8p是什么意思)

  • 手机距离感应器坏了对手机有什么影响(手机距离感应器维修多少钱)

    手机距离感应器坏了对手机有什么影响(手机距离感应器维修多少钱)

  • 8p来电话闪光灯怎么开(8p手机电话闪光灯)

    8p来电话闪光灯怎么开(8p手机电话闪光灯)

  • 联发科p23相当于骁龙什么处理器(联发科p23相当于麒麟)

    联发科p23相当于骁龙什么处理器(联发科p23相当于麒麟)

  • 一个计算机网络组成包括(真正意义上的第一个计算机网络)

    一个计算机网络组成包括(真正意义上的第一个计算机网络)

  • 手机无法接打电话但是可以上网(手机无法接打电话能上网怎么回事)

    手机无法接打电话但是可以上网(手机无法接打电话能上网怎么回事)

  • 蓝牙耳机接听设置方法(怎么设置蓝牙耳机接电话的声音)

    蓝牙耳机接听设置方法(怎么设置蓝牙耳机接电话的声音)

  • 苹果11耳机有什么不同(苹果11的耳机是多少钱)

    苹果11耳机有什么不同(苹果11的耳机是多少钱)

  • 什么是uwb(什么是UWB技术)

    什么是uwb(什么是UWB技术)

  • 关机时清理页面文件(如何设置电脑关机时清理使用痕迹)

    关机时清理页面文件(如何设置电脑关机时清理使用痕迹)

  • 印花税计税依据含不含增值税
  • 新个税税率法
  • 缴纳增值税的会计科目
  • 发票专票抵扣
  • 预期信用损失率计算公式
  • 固定资产清理结转到什么科目
  • 年底对账
  • 年底计提是什么意思
  • 一般纳税人有免征增值税吗
  • 医院收费单能当凭证用吗
  • 投资收益企业所得税优惠政策
  • 个体工商户是对公账户还是个人账户
  • 事务所和公司的专利工程师
  • 软件著作权费用怎么入账
  • 员工住院的发票可以做账吗
  • 融资租赁设备增值税怎样抵扣
  • 打折销售商品会计分录
  • 品牌管理费是否交增值税
  • 年终红包怎么入账
  • 待处置资产损溢在什么科目
  • 应交税金明细账余额怎么算
  • 个体工商户该如何交税
  • 印花税是不是不用计提
  • 过路费抵扣税率是多少
  • 大中小型企业标准划分表
  • 独立核算分公司可以享受小型微利企业优惠吗
  • 银行端查询缴税凭证在哪里缴费
  • 开业好不好
  • 增值税当月计提当月交可以吗
  • 外派人员计算个人所得税可否有附加扣除
  • 冲回坏账准备是什么意思
  • 质量扣款入什么科目
  • 什么是工商企业为了筹集资金而发行的债券
  • 税优识别码是纳税人识别号吗
  • 支付工伤赔偿款怎么做账
  • 结转人工费会计分录
  • win11更新22468
  • 苹果电脑如何查看内存大小
  • 电脑安全模式有声音吗
  • 前端vue实现预览excel
  • php变量设置
  • win7旗舰版系统怎么样
  • php数组实现
  • 预收账款调增应纳税所得额
  • win7系统文件在哪
  • 企业所得税的税收筹划
  • 企业间无偿借款涉税
  • 汇总纳税企业总分机构信息备案
  • thinkphpcount查询
  • 使用微软必应需要哪些条件
  • acpi disabled
  • 贷款减值准备怎么进损益类账户
  • SQL Server 2008 Express如何开启远程访问
  • SQL Server 2008+ Reporting Services (SSRS)使用USER登录问题
  • 开矿泉水发票怎么开?
  • 继续教育的相关知识
  • 残保金季度申报如何计算
  • 计提和发放工资的会计科目
  • 检测费用开票税率
  • 老板从公司借款怎么处理
  • 同一客户有应收应付可以相互抵消吗
  • 应付账款暂估会计分录怎么写
  • 新注册公司工商如何做印章确认
  • extra backup
  • win8连接网络
  • 如何使用搜狗拼音输入法
  • win7系统鼠标右键无法弹出菜单
  • windows ocx注册
  • media.codec是什么
  • w8系统怎么连接投影仪
  • win8如何禁止电脑自动安装软件
  • 项目总结之触摸问题分析
  • iframe嵌套页面滚动事件
  • javascript语言介绍
  • win10的安装方式有哪些
  • android电池优化设置
  • js设置页面的scrolltop
  • No active compatible AVD's or devices found. Relaunch this configuration after connecting a device o
  • 税务局副局长分管业务
  • 加工修理修配统称为什么
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设