suchen
HeimWeb-FrontendCSS-TutorialLassen Sie uns darüber sprechen, wie Sie mit SVG einen Bildmosaikeffekt erzielen

Wie verwende ich SVG, um einen Bildmosaikeffekt zu erzielen, ohne Javascript zu verwenden? Der folgende Artikel wird Ihnen ein detailliertes Verständnis vermitteln, ich hoffe, er wird Ihnen hilfreich sein!

Lassen Sie uns darüber sprechen, wie Sie mit SVG einen Bildmosaikeffekt erzielen

Ich habe zuvor einen Artikel meines Freundes Vajoy auf dem offiziellen Konto weitergeleitet – Qiao Bildmosaik mit CSS stilisieren. Vajoy 的一篇文章 -- 巧用 CSS 把图片马赛克风格化

核心是利用了 CSS 中一个很有意思的属性 -- image-rendering,它可以用于设置图像缩放算法。【推荐学习:css视频教程

何为 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="/static/imghwm/default1.png" data-src="pic.jpeg?30x30" class="lazy" alt="Lassen Sie uns darüber sprechen, wie Sie mit SVG einen Bildmosaikeffekt erzielen" >
img {
    width: 300px;
    height: 300px;
    image-rendering: pixelated
}

<strong>image-rendering: pixelated</strong> 实现马赛克效果的局限性

OK,那么为什么需要先缩小再放大,然后才运用 image-rendering: pixelated 呢?我们来做个对比,直接给原图设置 image-rendering: pixelated

直接给原图设置 image-rendering: pixelated 只会让图片变得更加有锯齿感,而不会直接产生马赛克的效果。

这也和 image-rendering: pixelated 的描述吻合,放大图像时, 使用最近邻居算法,因此,图像看着像是由大块像素组成的

我们只有基于放大模糊后的图像,才能利用 image-rendering: pixelated 得到一张被马赛克的图片!

利用 CSS 再图片缩小后再放大?

那么,假设我们只有一张清晰的原图,又想利用 CSS 得到一个马赛克效果,可行么?顺着这个思路,我们可以想到:

能否利用 CSS 将图片缩小后再放大,再运用 image-rendering: pixelated 呢?

不行。WEB 上的图片像极了 Photoshop 里的智能对象 —— 你可以任意修改它的尺寸(例如放大很多倍让其变模糊),但最后再把图片改回原本的大小时,图片会变回原来的样子(没有任何失真)

所以,要想在只有一张原图的情况下,得到一张模糊的图像,就不得不求助于 Canvas,这样一来就稍显麻烦了。我们只是想要个马赛克效果而已。

SVG 滤镜叠加实现马赛克效果

这就可以引出今天的主角了,SVG 滤镜,使用几层 SVG 滤镜的叠加,其实可以非常轻松的实现一个马赛克效果滤镜。

并且,SVG 滤镜可以通过 CSS filter,轻松的引入。

代码其实也非常的简单,SVG 定义一个滤镜,利用多层滤镜的叠加效果实现一个马赛克效果,然后,通过 CSS filter 引入,可以运用在任何元素上:

<img  src="/static/imghwm/default1.png" data-src="任意无需缩放的原图.png" class="lazy" alt="Lassen Sie uns darüber sprechen, wie Sie mit SVG einen Bildmosaikeffekt erzielen" >
<svg>
  <filter>
    <feflood></feflood>
    <fecomposite></fecomposite>
    <fetile></fetile>
    <fecomposite></fecomposite>
    <femorphology></femorphology>
  </filter>
</svg>
img {
    width: 300px;
    height: 300px;
    filter: url(#pixelate);
}

这样,我们就得到了一个马赛克效果:

如果你只是想使用这个效果,你甚至不需要去理解整个 SVG <filter></filter>

Der Kern besteht darin, eine interessante Eigenschaft in CSS zu verwenden – image- Rendering, mit dem der Bildskalierungsalgorithmus festgelegt werden kann. [Empfohlenes Lernen: CSS-Video-Tutorial]🎜

Was ist Bildrendering?

🎜CSS-Attribut-Bildrendering wird verwendet, um den Bildskalierungsalgorithmus festzulegen. Sie gilt für das Element selbst, für Bilder in anderen Attributen des Elements und für untergeordnete Elemente. 🎜🎜Die Syntax ist relativ einfach: 🎜rrreee🎜Unter diesen ist image-rendering: pixelated interessanter und kann ein Bild mit geringer Präzision mosaikieren. 🎜🎜Angenommen, wir haben ein Bild von 300px x 300px und lassen es in 30px x 30px konvertieren: 🎜🎜🎜🎜Wir werden das verzerrte Bild auf 300px x 300px:🎜🎜<img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/024/2de2f4696cb5a7294956183da932aa03-1.png?x-oss-process=image/resize,p_40" class="lazy" alt="" loading="lazy">🎜🎜 Wenn wir auf dieser Grundlage <code>image-rendering: pixelated für dieses Bild festlegen, erhalten wir ein Mosaikbild: 🎜rrreeerrreee🎜🎜

Bildwiedergabe: pixelig

Einschränkungen bei der Erzielung eines Mosaikeffekts🎜OK, warum müssen Sie dann zuerst verkleinern und dann vergrößern und dann image-rendering: pixelig? Machen wir einen Vergleich und legen Sie image-rendering: pixelated direkt für das Originalbild fest: 🎜🎜🎜🎜Setzen Sie image-rendering: pixelated direkt auf das Originalbild, wodurch das Bild nur gezackter wird, nicht es erzeugt direkt einen Mosaikeffekt. 🎜🎜Dies stimmt auch mit der Beschreibung von image-rendering: pixelated überein. Beim Vergrößern des Bildes wird der Nächste-Nachbarn-Algorithmus verwendet, sodass das Bild so aussieht, als ob es aus großen Blöcken zusammengesetzt wäre Pixel . 🎜🎜Nur basierend auf dem vergrößerten und unscharfen Bild können wir image-rendering: pixelated verwenden, um ein Mosaikbild zu erhalten! 🎜

Verwenden Sie CSS, um das Bild zu verkleinern und dann zu vergrößern?

🎜Angenommen, wir haben nur ein klares Originalbild und möchten CSS verwenden, um einen Mosaikeffekt zu erzielen. Dieser Idee folgend können wir denken: 🎜🎜Können wir CSS verwenden, um das Bild zu verkleinern und dann zu vergrößern, und dann image-rendering: pixelated verwenden? 🎜🎜Nein. Bilder im WEB ähneln intelligenten Objekten in Photoshop – Sie können ihre Größe nach Belieben ändern (z. B. mehrmals vergrößern, um sie unscharf zu machen), aber wenn Sie das Bild schließlich wieder auf seine ursprüngliche Größe zurücksetzen, wird das Bild dies tun kehrt zur ursprünglichen Größe zurück (ohne jegliche Verzerrung). 🎜🎜Wenn Sie also ein unscharfes Bild erhalten möchten, obwohl nur ein Originalbild vorhanden ist, müssen Sie auf Canvas zurückgreifen, was etwas mühsam ist. Wir wollen nur einen Mosaikeffekt. 🎜

SVG-Filter-Overlay, um einen Mosaikeffekt zu erzielen

🎜Das bringt uns zum heutigen Protagonisten, dem SVG-FilterDurch die Überlagerung mehrerer Ebenen von SVG-Filtern können Sie tatsächlich ganz einfach einen Mosaikeffektfilter erzielen. 🎜🎜Und SVG-Filter können einfach über CSS-Filter eingeführt werden. 🎜🎜Der Code ist eigentlich sehr einfach. SVG definiert einen Filter und nutzt den Überlagerungseffekt mehrerer Filterebenen, um einen Mosaikeffekt zu erzielen. Anschließend wird er über einen CSS-Filter eingeführt und kann auf jedes Element angewendet werden: 🎜rrreeerrreee🎜In diesem Fall Auf diese Weise erhalten wir einen Mosaikeffekt: 🎜🎜Lassen Sie uns darüber sprechen, wie Sie mit SVG einen Bildmosaikeffekt erzielen🎜 🎜Wenn Sie nur diesen Effekt nutzen möchten, müssen Sie nicht einmal verstehen, was das gesamte SVG <filter></filter> bewirkt. Natürlich, wenn Sie eine Person sind, die dies möchte Wenn Sie alles wissen, benötigen Sie einige Kenntnisse über die Grundlagen von SVG. Ich empfehle Ihnen, diese Einführungen zu meinen SVG-Filtern zu lesen: 🎜

Einschränkungen von CSS/SVG bei der Implementierung von Mosaik

Natürlich besteht die Einschränkung des CSS/SVG-Filters bei der Implementierung von Mosaik darin, dass Sie diese Methode direkt verwenden, wenn Sie nicht möchten, dass der Benutzer das Originalbild sieht auf dem Client Dies entspricht der direkten Belichtung des Originalbilds.

Da die CSS/SVG-Filtermethode darin besteht, Bilder im Frontend zu mosaikieren, ist das Originalbild erforderlich.

Natürlich können wir mit den beiden oben genannten Bildmosaiktechniken immer noch einige einfache interaktive Effekte erstellen, wie diesen:

Sie können alle oben genannten DEMO- und SVG-Filtercodes verwenden. Gefunden in diese beiden DEMOs:

Originaladresse: https://www.cnblogs.com/coco1s/p/16134088 .html

Autor: ChokCoco

(Lernvideo-Sharing: Web-Frontend)

Das obige ist der detaillierte Inhalt vonLassen Sie uns darüber sprechen, wie Sie mit SVG einen Bildmosaikeffekt erzielen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Dieser Artikel ist reproduziert unter:博客园. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Wohin sollte 'Podcast' -Link abonnieren?Wohin sollte 'Podcast' -Link abonnieren?Apr 16, 2025 pm 12:04 PM

Für eine Weile war iTunes der große Hund im Podcasting. Wenn Sie also "Abonnieren Sie Podcast" verlinkt haben, um zu mögen:

Browser -MotorvielfaltBrowser -MotorvielfaltApr 16, 2025 pm 12:02 PM

Wir haben die Oper verloren, als sie 2013 Chrome gingen. Gleiches Geschäft mit Edge, als es Anfang dieses Jahres auch Chrome ging. Mike Taylor nannte diese Veränderungen a "abnehmend

UX -Überlegungen zur WebfreigabeUX -Überlegungen zur WebfreigabeApr 16, 2025 am 11:59 AM

Von trashigen Clickbait -Websites bis hin zu den meisten August der Veröffentlichungen sind die Teilen von Schaltflächen seit langem im gesamten Web allgegenwärtig. Und doch ist es wohl diese diese

Wöchentliche Plattformnachrichten: Apple bereitet Webkomponenten, progressives HTML-Rendering, selbsthosting kritische Ressourcen bereitWöchentliche Plattformnachrichten: Apple bereitet Webkomponenten, progressives HTML-Rendering, selbsthosting kritische Ressourcen bereitApr 16, 2025 am 11:55 AM

In der Roundup der Woche geht Apple in Webkomponenten, wie Instagram Insta-Loading-Skripte und einige Lebensmittel für das Denken für selbsthosting kritische Ressourcen sind.

Git pathspecs und wie man sie benutztGit pathspecs und wie man sie benutztApr 16, 2025 am 11:53 AM

Als ich die Dokumentation von Git -Befehlen durchschaut hatte, bemerkte ich, dass viele von ihnen eine Option hatten. Ich dachte anfangs, dass dies nur ein war

Ein Farbwähler für ProduktbilderEin Farbwähler für ProduktbilderApr 16, 2025 am 11:49 AM

Klingt ein bisschen wie ein schweres Problem. Ist es nicht? Wir haben oft keine Produktaufnahmen in Tausenden von Farben, sodass wir das mit dem mit umdrehen können. Wir auch nicht

Ein dunkler Modus wechselt mit React und ThemeProviderEin dunkler Modus wechselt mit React und ThemeProviderApr 16, 2025 am 11:46 AM

Ich mag es, wenn Websites eine dunkle Modusoption haben. Der dunkle Modus erleichtert mir das Lesen von Webseiten und hilft meinen Augen, sich entspannter zu fühlen. Viele Websites, einschließlich

Einige praktisch mit dem HTML-DialogelementEinige praktisch mit dem HTML-DialogelementApr 16, 2025 am 11:33 AM

Ich schaue mir das HTML -Element zum ersten Mal an. Ich habe es für eine Weile dessen bewusst, aber Haven ' Es wurde es noch nicht für einen Dreh genommen. Es hat einige ziemlich cool und

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

PHPStorm Mac-Version

PHPStorm Mac-Version

Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)