Drei Möglichkeiten zum Erstellen eines Graueffekts auf Website-Bildern

Drei Möglichkeiten zum Erstellen eines Graueffekts auf Website-Bildern
Ich habe schon immer Graustufenbilder bevorzugt, da sie meiner Meinung nach künstlerischer wirken. Viele Bildbearbeitungsprogramme wie Photoshop können Ihre Farbbilder problemlos in Graustufen umwandeln. Es gibt sogar Optionen zum Anpassen der Farbtiefe und des Farbtons. Aufgrund der unterschiedlichen Browser lässt sich dieser Effekt im Web leider nicht so einfach erzielen.
1. CSS-Filter
Die Verwendung der CSS-Filtereigenschaft ist wahrscheinlich die einfachste Möglichkeit, ein Bild in Graustufen umzuwandeln. In der Vergangenheit verfügte der Internet Explorer über eine proprietäre CSS-Eigenschaft namens „Filter“, um benutzerdefinierte Effekte, einschließlich Graustufen, anzuwenden.
Jetzt ist die Filtereigenschaft Teil der CSS3-Spezifikation und wird in einigen Browsern unterstützt, darunter Firefox, Chrome und Safari. Zuvor haben wir auch Webkit-Filter erwähnt, die Bilder nicht nur in Graustufen, sondern auch in Sepia und mit Unschärfeeffekten anzeigen.
Durch Hinzufügen des folgenden CSS-Stils kann das Bild grau werden

Code kopieren
Der Code lautet wie folgt:

img {
-webkit-filter: Graustufen(1); /* Webkit */
Filter: grau; /* IE6-9 */
Filter: Graustufen(1); /* W3C */
}

Unterstützt die Browser IE6–9 und Webkit (Chrome 18+, Safari 6.0+ und Opera 15+)
(Hinweis: Dieser Code hat keine Auswirkungen auf Firefox.)
2. Javascript
Die zweite Methode ist die Verwendung von JavaScript. Technisch gesehen sollten alle Browser, die JavaScript unterstützen, JavaScript unterstützen, einschließlich IE6 und darunter.

Code kopieren
Der Code lautet wie folgt:

var imgObj = document.getElementById('js-image');
Funktion grau(imgObj) {
var Leinwand = Dokument.createElement('Leinwand');
var canvasContext = canvas.getContext('2d');
var imgW = imgObj.width;
var imgH = imgObj.height;
Leinwand.Breite = BildW;
Leinwand.Höhe = BildH;
canvasContext.drawImage(imgObj, 0, 0);
var imgPixels = canvasContext.getImageData(0, 0, imgW, imgH);
für(var y = 0; y < imgPixels.height; y++){
für(var x = 0; x < imgPixels.width; x++){
var i = (y * 4) * imgPixels.width + x * 4;
var avg = (imgPixels.data[i] + imgPixels.data[i + 1] + imgPixels.data[i + 2]) / 3;
imgPixels.data[i] = Durchschnitt;
imgPixels.data[i + 1] = Durchschnitt;
imgPixels.data[i + 2] = Durchschnitt;
}
}
canvasContext.putImageData(imgPixels, 0, 0, 0, 0, imgPixels.Breite, imgPixels.Höhe);
gibt canvas.toDataURL() zurück;
}
imgObj.src = grau(imgObj);

3. SVG
Die dritte Methode ist von SVG Filter. Sie müssen eine SVG-Datei erstellen, den folgenden Code darin schreiben und sie als ***.svg speichern

Code kopieren
Der Code lautet wie folgt:

<svg xmlns="http://www.w3.org/2000/svg">
<filter id="Graustufen">
<feColorMatrix Typ="Matrix" Werte="0,3333 0,3333 0,3333 0 0 0,3333 0,3333 0,3333 0 0 0,3333 0,3333 0,3333 0 0 0 0 0 1 0"/>
</filter>
</svg>

Mithilfe der Filtereigenschaften können wir dann über die ID des Elements in der SVG-Datei eine Verbindung zur SVG-Datei herstellen.

Code kopieren
Der Code lautet wie folgt:

img {
Filter: URL ('img/gray.svg#Graustufen');
}

Sie können es auch in eine CSS-Datei einfügen, zum Beispiel:

Code kopieren
Der Code lautet wie folgt:

img {
Filter: URL ('URL("data:image/svg+xml;utf8,<svg%20xmlns='http://www.w3.org/2000/svg'><filter%20id='Graustufen'><feColorMatrix%20type='matrix'%20values='0.3333%200.3333%200.3333%200.3333%200.3333%200%200%200.3333%200.3333%200.3333%200.3333%200%200%200%200%200%201%200'/></filter></svg>#Graustufen");')
}

Zusammenfassend können wir zur Unterstützung von Graustufeneffekten in allen Browsern die oben genannten Methoden zusammen mit dem folgenden Codeausschnitt verwenden. Dieser Code unterstützt Firefox 3.5+, Opera 15+, Safari, Chrome und IE.

Code kopieren
Der Code lautet wie folgt:

img {
-Webkit-Filter: Graustufen (100 %);
-webkit-filter: Graustufen(1);
Filter: Graustufen (100 %);
Filter: URL ('../img/gray.svg#Graustufen');
Filter: grau;
}

Wir können den obigen Code mit dem JavaScript-Ansatz nutzen und den CSS-Filter einfach als Fallback bereitstellen, falls JavaScript deaktiviert ist. Mithilfe von Modernizr lässt sich diese Idee ganz einfach umsetzen.

Code kopieren
Der Code lautet wie folgt:

.no-js img {
-Webkit-Filter: Graustufen (100 %);
-webkit-filter: Graustufen(1);
Filter: Graustufen (100 %);
Filter: URL ('../img/gray.svg#Graustufen');
Filter: grau;
}

OK, Sie können den coolen Effekt in Ihrem Browser sehen! !

<<:  Einfaches Beispiel für HTML-Textformatierung (ausführliche Erklärung)

>>:  So implementieren Sie ein Hover-Dropdown-Menü mit CSS

Artikel empfehlen

CSS-Lösung für mehrspaltiges Layout

1. Feste Breite + adaptiv Erwarteter Effekt: fest...

Grundlegende Anwendungsmethoden für eingebettete und externe JavaScript-Links

Inhaltsverzeichnis Grundlegende Anwendung eingebe...

Detaillierte Erklärung zum Schreiben und Verwenden von Makefile unter Linux

Inhaltsverzeichnis Makefile Makefile-Benennung un...

Der einfachste Weg zum Debuggen gespeicherter Prozeduren in MySQL

Ein Kollege hat mir einmal gesagt, ich solle eine...

So ändern Sie die Ubuntu-Quellliste (Quellliste) - detaillierte Erklärung

Einführung Die Standardquelle von Ubuntu ist kein...

Fallstudie zum Unterschied zwischen JavaScript parseInt() und Number()

Lernziele: Die beiden Funktionen parseInt() und N...

So implementieren Sie ein Dropdown-Menü für die HTML-Eingabe

Code kopieren Der Code lautet wie folgt: <html...

Teilen Sie 13 grundlegende Syntax von Typescript

Inhaltsverzeichnis 1. Was ist Ts 2. Grundlegende ...

Detailliertes Tutorial zur Installation von ffmpeg unter Linux

1. Installieren Sie ffmpeg unter Centos Linux 1. ...

Tutorial zum Verbinden und Verwenden von MySQL 8.0 im Maven-Projekt von IDEA

Schauen wir uns zunächst meine grundlegende Entwi...

Detailliertes Tutorial zum PyCharm- und SSH-Remote-Access-Server-Docker

Hintergrund: Einige Experimente müssen auf dem Se...

Prometheus überwacht MySQL mithilfe der Grafana-Anzeige

Inhaltsverzeichnis Prometheus überwacht MySQL übe...

So installieren und ändern Sie das Anfangskennwort von mysql5.7.18

Informationen zur Centos-Installation von MySQL f...