国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
何為 image-rendering?
利用 CSS 再圖片縮小后再放大?
SVG 濾鏡疊加實(shí)現(xiàn)馬賽克效果
CSS/SVG 實(shí)現(xiàn)馬賽克的局限性
首頁(yè) web前端 css教程 聊聊如何利用 SVG 實(shí)現(xiàn)圖片馬賽克效果

聊聊如何利用 SVG 實(shí)現(xiàn)圖片馬賽克效果

Sep 01, 2022 am 11:05 AM
svg

不借助 Javascript,如何利用 SVG 實(shí)現(xiàn)圖片馬賽克效果?下面本篇文章就來(lái)帶大家詳細(xì)了解一下,希望對(duì)大家有所幫助!

聊聊如何利用 SVG 實(shí)現(xiàn)圖片馬賽克效果

之前在公眾號(hào)轉(zhuǎn)發(fā)了好友 Vajoy 的一篇文章 -- 巧用 CSS 把圖片馬賽克風(fēng)格化

核心是利用了 CSS 中一個(gè)很有意思的屬性 -- image-rendering,它可以用于設(shè)置圖像縮放算法?!就扑]學(xué)習(xí):css視頻教程

何為 image-rendering?

CSS 屬性 image-rendering 用于設(shè)置圖像縮放算法。它適用于元素本身,適用于元素其他屬性中的圖像,也應(yīng)用于子元素。

語(yǔ)法比較簡(jiǎn)單:

{
????image-rendering:?auto;??????????????//?默認(rèn)值,使用雙線性(bilinear)算法進(jìn)行重新采樣(高質(zhì)量)
????image-rendering:?smooth;?????????//?使用能最大化圖像客觀觀感的算法來(lái)縮放圖像。讓照片更“平滑”
????image-rendering:?crisp-edges;??//?使用可有效保留對(duì)比度和圖像中的邊緣的算法來(lái)對(duì)圖像進(jìn)行縮放
????image-rendering:?pixelated;??????//?放大圖像時(shí),?使用最近鄰居算法,因此,圖像看著像是由大塊像素組成的
}

其中,image-rendering: pixelated 比較有意思,可以將一張低精度圖像馬賽克化。

譬如,假設(shè)我們有一張 300px x 300px 的圖像,我們讓他轉(zhuǎn)換成 30px x 30px

我們?cè)侔咽д婧蟮膱D片,放大到 300px x 300px

在此基礎(chǔ)上,我們給這張圖片設(shè)置 image-rendering: pixelated,就能得到一張被馬賽克化圖片:

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

<strong>image-rendering: pixelated</strong> 實(shí)現(xiàn)馬賽克效果的局限性

OK,那么為什么需要先縮小再放大,然后才運(yùn)用 image-rendering: pixelated 呢?我們來(lái)做個(gè)對(duì)比,直接給原圖設(shè)置 image-rendering: pixelated

直接給原圖設(shè)置 image-rendering: pixelated 只會(huì)讓圖片變得更加有鋸齒感,而不會(huì)直接產(chǎn)生馬賽克的效果。

這也和 image-rendering: pixelated 的描述吻合,放大圖像時(shí), 使用最近鄰居算法,因此,圖像看著像是由大塊像素組成的。

我們只有基于放大模糊后的圖像,才能利用 image-rendering: pixelated 得到一張被馬賽克的圖片!

利用 CSS 再圖片縮小后再放大?

那么,假設(shè)我們只有一張清晰的原圖,又想利用 CSS 得到一個(gè)馬賽克效果,可行么?順著這個(gè)思路,我們可以想到:

能否利用 CSS 將圖片縮小后再放大,再運(yùn)用 image-rendering: pixelated 呢?

不行。WEB 上的圖片像極了 Photoshop 里的智能對(duì)象 —— 你可以任意修改它的尺寸(例如放大很多倍讓其變模糊),但最后再把圖片改回原本的大小時(shí),圖片會(huì)變回原來(lái)的樣子(沒(méi)有任何失真)。

所以,要想在只有一張?jiān)瓐D的情況下,得到一張模糊的圖像,就不得不求助于 Canvas,這樣一來(lái)就稍顯麻煩了。我們只是想要個(gè)馬賽克效果而已。

SVG 濾鏡疊加實(shí)現(xiàn)馬賽克效果

這就可以引出今天的主角了,SVG 濾鏡,使用幾層 SVG 濾鏡的疊加,其實(shí)可以非常輕松的實(shí)現(xiàn)一個(gè)馬賽克效果濾鏡。

并且,SVG 濾鏡可以通過(guò) CSS filter,輕松的引入。

代碼其實(shí)也非常的簡(jiǎn)單,SVG 定義一個(gè)濾鏡,利用多層濾鏡的疊加效果實(shí)現(xiàn)一個(gè)馬賽克效果,然后,通過(guò) CSS filter 引入,可以運(yùn)用在任何元素上:

<img src="任意無(wú)需縮放的原圖.png" 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);
}

這樣,我們就得到了一個(gè)馬賽克效果:

如果你只是想使用這個(gè)效果,你甚至不需要去理解整個(gè) SVG <filter> 到底做了什么事情,當(dāng)然,如果你是一個(gè)一問(wèn)到底的人,那么需要有一定的 SVG 基礎(chǔ),建議可以看看我的這幾篇關(guān)于 SVG 濾鏡的介紹:

CSS/SVG 實(shí)現(xiàn)馬賽克的局限性

當(dāng)然,CSS/SVG 濾鏡實(shí)現(xiàn)馬賽克的局限性在于,如果你是不想給用戶看到原圖的,那么在客戶端直接使用這個(gè)方式相當(dāng)于直接把原圖的暴露了。

因?yàn)?CSS/SVG 濾鏡的方式是在前端進(jìn)行圖片馬賽克化的,而且需要原圖。

當(dāng)然,利用上述的兩個(gè)實(shí)現(xiàn)圖片馬賽克技巧,我們還是可以用于制作一些簡(jiǎn)單的交互效果的,像是這樣:

上述的 DEMO 和 SVG 濾鏡的全部代碼,你都可以在這兩個(gè) DEMO 中找到:

原文地址:https://www.cnblogs.com/coco1s/p/16134088.html

作者:ChokCoco

(學(xué)習(xí)視頻分享:web前端

以上是聊聊如何利用 SVG 實(shí)現(xiàn)圖片馬賽克效果的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

熱門(mén)話題

Laravel 教程
1600
29
PHP教程
1502
276
聊聊如何利用 SVG 實(shí)現(xiàn)圖片馬賽克效果 聊聊如何利用 SVG 實(shí)現(xiàn)圖片馬賽克效果 Sep 01, 2022 am 11:05 AM

不借助 Javascript,如何利用 SVG 實(shí)現(xiàn)圖片馬賽克效果?下面本篇文章就來(lái)帶大家詳細(xì)了解一下,希望對(duì)大家有所幫助!

深入淺析vue3 vite中怎么使用svg圖標(biāo) 深入淺析vue3 vite中怎么使用svg圖標(biāo) Apr 28, 2022 am 10:48 AM

svg圖片在項(xiàng)目中使用的非常廣泛,下面本篇文章帶大家介紹一下如何在vue3 vite 中使用svg圖標(biāo),希望對(duì)大家有所幫助!

svg怎么轉(zhuǎn)jpg格式 svg怎么轉(zhuǎn)jpg格式 Nov 24, 2023 am 09:50 AM

svg可以通過(guò)使用圖像處理軟件、使用在線轉(zhuǎn)換工具和使用Python圖像處理庫(kù)的方法來(lái)轉(zhuǎn)jpg格式。詳細(xì)介紹:1、圖像處理軟件包括Adobe Illustrator、Inkscape和GIMP;2、在線轉(zhuǎn)換工具包括CloudConvert、Zamzar、Online Convert等;3、Python圖像處理庫(kù)等等。

VUE3入門(mén)教程:使用Vue.js插件玩轉(zhuǎn)SVG VUE3入門(mén)教程:使用Vue.js插件玩轉(zhuǎn)SVG Jun 16, 2023 am 09:48 AM

隨著現(xiàn)代Web前端開(kāi)發(fā)的不斷發(fā)展,越來(lái)越多的技術(shù)被廣泛應(yīng)用于實(shí)際開(kāi)發(fā)中。其中,Vue.js是目前最為流行的JavaScript框架之一,它基于MVVM模式,提供了豐富的API和組件庫(kù),使得開(kāi)發(fā)響應(yīng)式、可復(fù)用、高效的Web應(yīng)用變得更加容易。而目前最新的Vue.js3版本相較于舊版,又有著更好的性能和更豐富的特性,引起了廣泛的關(guān)注和研究。本文將會(huì)為大家介紹一種

詳解用SVG給 favicon 添加標(biāo)識(shí) 詳解用SVG給 favicon 添加標(biāo)識(shí) Sep 07, 2022 am 10:30 AM

怎么使用SVG給 favicon 添加標(biāo)識(shí)?下面本篇文章給大家介紹一下使用 SVG 生成帶標(biāo)識(shí)的 favicon的方法,希望對(duì)大家有所幫助!

vue3 vite2中怎么使用svg方法 vue3 vite2中怎么使用svg方法 May 11, 2023 pm 05:55 PM

一、安裝vite-plugin-svg-icons此處還需要安裝下fast-glob相關(guān)依賴,不然vite運(yùn)行npmrundev時(shí)會(huì)報(bào)Cannotfindmodule&#39;fast-glob&rsquo;的錯(cuò)誤npmifast-glob@3.x-Dnpmivite-plugin-svg-icons@2.x-D二、在src/components/svgIcon下新建組件index.vueimport{computed}from&#39;vue&#39;;cons

vue3 vue-cli4中怎么使用svg vue3 vue-cli4中怎么使用svg May 11, 2023 pm 05:58 PM

一、安裝svg-sprite-loadernpminstallsvg-sprite-loader--save-dev二、在src/components/svgIcon下新建組件index.vueimport{computed}from"@vue/reactivity";exportdefault{name:"baseSvgIcon",props:{iconClass:{type:String},className:{type:String},},setup

在HTML5畫(huà)布上繪制SVG文件 在HTML5畫(huà)布上繪制SVG文件 Sep 15, 2023 pm 03:09 PM

要在畫(huà)布元素上繪制HTMLImageElements,請(qǐng)使用drawImage()方法。此方法使用src=”mySVG.svg”定義一個(gè)Image變量,并在加載時(shí)使用drawImage。varmyImg=newImage();myImg.onload=function(){??ctx.drawImage(myImg,0,0);}img.src="http://www.example.com/files/sample.svg";

See all articles