image-rendering: pixelated/crisp-edges – Bildinterpolation im Browser steuern
In diesem Beitrag lernt ihr die CSS-Eigenschaft image-rendering, sowie die Werte pixelated und crisp-edges kennen.
Grafiken werden in flexiblen Web-Layouts häufig mit Hilfe des Browsers skaliert. Sofern es sich um Pixelgrafiken handelt, geht Qualität verloren, wenn die Grafik über ihre tatsächliche Größe hinaus skaliert wird. Das Bild wird unscharf. Aus diesem Grund werden Grafiken normalerweise kleiner skaliert. Doch auch diese Vorgehensweise hat Nachteile, denn es werden mehr Daten geladen als notwendig. Responsive Images und Techniken wie Downsampling schaffen hier Abhilfe, doch auch die Art wie der Browser die Bildskalierung berechnet, kann euch dabei helfen ein optisch besseres Ergebnis zu erreichen.
image-rendering
Mit der CSS-Eigenschaft image-rendering
kann gesteuert werden, wie der Browser das Bild rendert. Sichtbar ist der Effekt aber erst, wenn das Bild skaliert wurde. Die CSS-Eigenschaft image-rendering
ist also entfernt vergleichbar mit der Bildinterpolation in Photoshop oder vergleichbaren Grafikprogrammen. Auch hier stehen bei der Transformation von Grafiken verschiedene Interpolationsmethoden zur Verfügung.
image-rendering: auto;
Der Standard-image-rendering
-Wert aller Browser ist auto
, was der Interpolationsmethode »Bikubisch (Automatisch)« von Photoshop am ehesten entspricht. Der folgende Screenshot zeigt, wie eine Grafik normalerweise im Browser skaliert wird.
image-rendering: pixelated;
Mit folgendem CSS-Befehl kann die Rendering-Methode auf »Pixelwiederholung« gesetzt werden:
.pixelated {
image-rendering: pixelated;
}
Hierbei werden alle Pixel auf glatte Zahlen gerundet. Das hat dann den Effekt, dass Kanten sehr scharf dargestellt werden.
image-rendering: crisp-edges;
Beim Wert crisp-edges
, wird der Browser angewiesen einen Interpolations-Algorithmus zu verwenden, bei dem Kontraste und Farben erhalten bleiben und Kanten nicht unscharf werden. Das funktioniert sowohl beim Verkleinern als auch beim Vergrößern. In der Praxis fällt es häufig schwer einen Unterschied zwischen pixelated
und crisp-edges
wahrzunehmen.
Browser Support
Den detaillierten Browser-Support für dieses Feature könnt ihr auf caniuse.com einsehen.
Praxiseinsatz?
Die Interpolationsmethode »Pixelwiederholung« wird in Photoshop u.a. eingesetzt, wenn QR-Codes, Strichgrafiken, technische Zeichnungen, Infografiken oder Illustrationen die einen bewusst pixeligen Look haben (z. B. der 8 Bit-Stil) skaliert werden müssen. Im Browser kann ich mir vergleichbare Einsatzzwecke vorstellen.
Seit einiger Zeit macht Chrome viele Bilder unscharf. Liegt wohl daran, wie Chrome damit umgeht.
Mit dem Befehl img { image-rendering: -webkit-optimize-contrast;} wird alles wieder gut, allerdings sind dann die Bilder in Safari verpixelt. Hast du eine Lösung dazu?
Vielen dank für den Artikel!
Mittlerweile sollte man aber sich so langsam mit svgs (mit png fallback 2x) beschäftigen…