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

目錄
何為 image-rendering?
利用 CSS 再圖片縮小後再放大?
SVG 濾鏡疊加實現(xiàn)馬賽克效果
CSS/SVG 實現(xiàn)馬賽克的限制
首頁 web前端 css教學(xué) 聊聊如何利用 SVG 實現(xiàn)圖片馬賽克效果

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

Sep 01, 2022 am 11:05 AM
svg

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

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

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

核心是利用了 CSS 中一個很有趣的屬性 -- image-rendering,它可以用來設(shè)定圖片縮放演算法。 【推薦學(xué)習(xí):css影片教學(xué)

何為 image-rendering?

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

語法比較簡單:

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

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

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

我們再把失真後的圖片,放大到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> 實現(xiàn)馬賽克效果的限制

OK,那麼為什麼需要先縮小再放大,然後才運(yùn)用image-rendering: pixelated 呢?我們來做個對比,直接給原圖設(shè)定image-rendering: pixelated

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

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

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

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

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

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

不行。 WEB 上的圖片像極了Photoshop 裡的智慧型物件- 你可以任意修改它的尺寸(例如放大很多倍讓其模糊),但最後再把圖片改回原本的大小時,圖片會變回原來的樣子(沒有任何失真)。

所以,要想在只有一張原圖的情況下,得到一張模糊的圖像,就不得不求助於 Canvas,這樣一來就稍顯麻煩了。我們只是想要個馬賽克效果而已。

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

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

並且,SVG 濾鏡可以透過 CSS filter,輕鬆的引入。

程式碼其實也非常的簡單,SVG 定義一個濾鏡,利用多層濾鏡的疊加效果實現(xiàn)一個馬賽克效果,然後,透過CSS filter 引入,可以運(yùn)用在任何元素上:

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

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

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

CSS/SVG 實現(xiàn)馬賽克的限制

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

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

當(dāng)然,利用上述的兩個實作圖片馬賽克技巧,我們還是可以用來製作一些簡單的互動效果的,像是這樣:

#上述的DEMO 和SVG 濾鏡的全部程式碼,你都可以在這兩個DEMO 中找到:

原文網(wǎng)址:https://www.cnblogs.com/coco1s/p/16134088.html

#作者:ChokCoco

(學(xué)習(xí)影片分享:web前端

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

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

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

聊聊如何利用 SVG 實現(xiàn)圖片馬賽克效果 聊聊如何利用 SVG 實現(xiàn)圖片馬賽克效果 Sep 01, 2022 am 11:05 AM

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

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

svg圖片在專案中使用的非常廣泛,以下這篇文章帶大家介紹如何在vue3 + vite 中使用svg圖標(biāo),希望對大家有所幫助!

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

svg可以透過使用影像處理軟體、使用線上轉(zhuǎn)換工具和使用Python影像處理庫的方法來轉(zhuǎn)jpg格式。詳細(xì)介紹:1.影像處理軟體包括Adobe Illustrator、Inkscape和GIMP;2、線上轉(zhuǎn)換工具包括CloudConvert、Zamzar、Online Convert等;3、Python影像處理庫等等。

VUE3入門教學(xué):使用Vue.js外掛程式玩SVG VUE3入門教學(xué):使用Vue.js外掛程式玩SVG Jun 16, 2023 am 09:48 AM

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

詳解用SVG為 favicon 新增標(biāo)識 詳解用SVG為 favicon 新增標(biāo)識 Sep 07, 2022 am 10:30 AM

怎麼使用SVG為 favicon 新增標(biāo)識?以下這篇文章為大家介紹一下使用 SVG 產(chǎn)生帶有標(biāo)識的 favicon的方法,希望對大家有幫助!

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時會報Cannotfindmodule'fast-glob'的錯誤npmifast-glob@3.x-Dnpmivite-plugin-svg -icons@2.x-D二、在src/components/svgIcon下新建元件index.vueimport{computed}from'vue';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畫布上繪製SVG文件 在HTML5畫布上繪製SVG文件 Sep 15, 2023 pm 03:09 PM

要在畫布元素上繪製HTMLImageElements,請使用drawImage()方法。此方法使用src=”mySVG.svg”定義一個Image變量,並在載入時使用drawImage。 varmyImg=newImage();myImg.onload=function(){??ctx.drawImage(myImg,0,0);}img.src="http://www.example.com/files/sample.svg";

See all articles