Bilder ohne Antialiasing im Browser strecken
Bei der Verbesserung der Pixelkunst geht es oft darum, Bilder zu strecken, um einzelne Pixel zu vergrößern. Herkömmliche Techniken wie CSS und JavaScript führen jedoch typischerweise zu unerwünschter Unschärfe (Antialiasing). Dieser Artikel befasst sich mit der Frage, ob es möglich ist, Bilder im Browser ohne Antialiasing zu strecken.
Trotz Recherche mit CSS, JavaScript und HTML stieß der Autor zunächst auf erfolglose Versuche aufgrund von Antialiasing. CSS-Techniken wie Image-Rendering: Crisp-Edges erwiesen sich in modernen Browsern als effektiv, waren jedoch in Internet Explorer 9 und früheren Versionen inkonsistent und wurden nicht unterstützt.
Die vorgestellte Lösung beinhaltet die Verwendung eines Canvas-Elements, um Bilddaten Pixel für Pixel zu manipulieren. Eine Quell-Leinwand empfängt das Originalbild und eine Ziel-Leinwand wird erstellt, um die einzelnen Pixel zu skalieren und zu zeichnen.
<code class="javascript">var img = new Image(); img.src = ...; img.onload = function() { var scale = 8; var src_canvas = document.createElement('canvas'); src_canvas.width = this.width; src_canvas.height = this.height; var src_ctx = src_canvas.getContext('2d'); src_ctx.drawImage(this, 0, 0); var src_data = src_ctx.getImageData(0, 0, this.width, this.height).data; var dst_canvas = document.getElementById('canvas'); dst_canvas.width = this.width * scale; dst_canvas.height = this.height * scale; var dst_ctx = dst_canvas.getContext('2d'); var offset = 0; for (var y = 0; y < this.height; ++y) { for (var x = 0; x < this.width; ++x) { var r = src_data[offset++]; var g = src_data[offset++]; var b = src_data[offset++]; var a = src_data[offset++] / 100.0; dst_ctx.fillStyle = 'rgba(' + [r, g, b, a].join(',') + ')'; dst_ctx.fillRect(x * scale, y * scale, scale, scale); } } };</code>
Diese Methode bietet einen Workaround für das Antialiasing-Problem und ermöglicht eine pixelgenaue Skalierung ohne Unschärfe. Es ist jedoch zu beachten, dass die Unterstützung für Bildwiedergabeeigenschaften je nach Browser und Version unterschiedlich sein kann.
Das obige ist der detaillierte Inhalt vonKönnen wir Bilder im Browser ohne Antialiasing strecken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!