CanvasRenderingContext2D: filter-Eigenschaft

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Die CanvasRenderingContext2D.filter-Eigenschaft der Canvas 2D API bietet Filtereffekte wie Weichzeichnen und Graustufen. Sie ist ähnlich der CSS-Eigenschaft filter und akzeptiert die gleichen Werte.

Wert

Die filter-Eigenschaft akzeptiert den Wert "none" oder eine oder mehrere der folgenden Filterfunktionen in einem String.

url()

Eine CSS url(). Akzeptiert jede URL, die zu einem SVG-Filterelement aufgelöst wird. Dies kann die ID eines Elements, ein Pfad zu einer externen XML-Datei oder sogar ein kodierter SVG-Datenwert sein.

blur()

Ein CSS <length>. Wendet einen Gaußschen Weichzeichner auf die Zeichnung an. Es definiert den Wert der Standardabweichung für die Gaußsche Funktion, das heißt, wie viele Pixel auf dem Bildschirm ineinander übergehen; daher erzeugt ein größerer Wert mehr Unschärfe. Ein Wert von 0 lässt die Eingabe unverändert.

brightness()

Ein CSS <percentage>. Wendet einen linearen Multiplikator auf die Zeichnung an, wodurch sie heller oder dunkler erscheint. Ein Wert unter 100% verdunkelt das Bild, während ein Wert über 100% es aufhellt. Ein Wert von 0% erzeugt ein Bild, das vollständig schwarz ist, während ein Wert von 100% die Eingabe unverändert lässt.

contrast()

Ein CSS <percentage>. Passt den Kontrast der Zeichnung an. Ein Wert von 0% erzeugt eine Zeichnung, die vollständig schwarz ist. Ein Wert von 100% lässt die Zeichnung unverändert.

drop-shadow()

Wendet einen Schlagschatteneffekt auf die Zeichnung an. Ein Schlagschatten ist im Wesentlichen eine verschwommene, versetzte Version der Alpha-Maske der Zeichnung, die in einer bestimmten Farbe unter der Zeichnung zusammengesetzt wird. Diese Funktion nimmt bis zu fünf Argumente an:

<offset-x>

Siehe <length> für mögliche Einheiten. Gibt die horizontale Entfernung des Schattens an.

<offset-y>

Siehe <length> für mögliche Einheiten. Gibt die vertikale Entfernung des Schattens an.

<blur-radius>

Je größer dieser Wert ist, desto größer wird die Unschärfe, sodass der Schatten größer und heller wird. Negative Werte sind nicht erlaubt.

<color>

Siehe <color>-Werte für mögliche Schlüsselwörter und Notationen.

grayscale()

Ein CSS <percentage>. Konvertiert die Zeichnung in Graustufen. Ein Wert von 100% ist vollständig in Graustufen. Ein Wert von 0% lässt die Zeichnung unverändert.

hue-rotate()

Ein CSS <angle>. Wendet eine Farbton-Drehung auf die Zeichnung an. Ein Wert von 0deg lässt die Eingabe unverändert.

invert()

Ein CSS <percentage>. Invertiert die Zeichnung. Ein Wert von 100% bedeutet vollständige Invertierung. Ein Wert von 0% lässt die Zeichnung unverändert.

opacity()

Ein CSS <percentage>. Wendet Transparenz auf die Zeichnung an. Ein Wert von 0% bedeutet vollständig transparent. Ein Wert von 100% lässt die Zeichnung unverändert.

saturate()

Ein CSS <percentage>. Sättigt die Zeichnung. Ein Wert von 0% bedeutet vollständig entsättigt. Ein Wert von 100% lässt die Zeichnung unverändert.

sepia()

Ein CSS <percentage>. Konvertiert die Zeichnung in Sepia. Ein Wert von 100% bedeutet vollständig Sepia. Ein Wert von 0% lässt die Zeichnung unverändert.

none

Es wird kein Filter angewendet. Anfangswert.

Beispiele

Um diese Beispiele anzusehen, verwenden Sie einen Browser, der diese Funktion unterstützt; siehe die Kompatibilitätstabelle unten.

Anwenden eines Weichzeichners

Dieses Beispiel zeichnet ein Textstück mit der filter-Eigenschaft weich.

HTML

html
<canvas id="canvas"></canvas>

JavaScript

js
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");

ctx.filter = "blur(4px)";
ctx.font = "48px serif";
ctx.fillText("Hello world", 50, 100);

Ergebnis

Anwenden mehrerer Filter

Sie können so viele Filter kombinieren, wie Sie möchten. Dieses Beispiel wendet die Filter contrast, sepia und drop-shadow auf ein Foto eines Nashorns an.

HTML

html
<canvas id="canvas" width="400" height="150"></canvas>
<div class="hidden">
  <img
    id="source"
    src="https://mdn.github.io/shared-assets/images/examples/rhino.jpg" />
</div>

JavaScript

js
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
const image = document.getElementById("source");

image.addEventListener("load", (e) => {
  // Draw unfiltered image
  ctx.drawImage(image, 0, 0, image.width * 0.6, image.height * 0.6);

  // Draw image with filter
  ctx.filter = "contrast(1.4) sepia(1) drop-shadow(-9px 9px 3px #e81)";
  ctx.drawImage(image, 400, 0, -image.width * 0.6, image.height * 0.6);
});

Ergebnis

Spezifikationen

Specification
HTML
# dom-context-2d-filter-dev

Browser-Kompatibilität

Siehe auch