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

Anzeigemodus von Elementen in CSS

In CSS werden Element-Tags entsprechend den unter...

Einfaches Docker Swarm-Tutorial

Schwarm drei virtuelle Maschinen 132,133,134 1. I...

Beispiel für die Validierung eines JavaScript-Formulars

HTML-Formulare werden häufig verwendet, um Benutz...

Detaillierte Erläuterung der Laderegeln der require-Methode in node.js

Laderegeln der Require-Methode Laden aus dem Cach...

Analyse der Prinzipien und Verwendung von Linux-Hardlinks und Softlinks

Im Linux-System gibt es einen Dateityp namens Lin...

Sollte ich beim Erstellen einer Website die Kodierung UTF-8 oder GB2312 verwenden?

Beim Öffnen ausländischer Websites werden häufig ...