브라우저에서 앤티앨리어싱 없이 이미지 늘이기
픽셀 아트를 향상하려면 이미지를 늘려 개별 픽셀을 확대하는 경우가 많습니다. 그러나 CSS 및 JavaScript와 같은 기존 기술에서는 일반적으로 원치 않는 흐림(앤티앨리어싱)이 발생합니다. 이 기사에서는 앤티앨리어싱 없이 브라우저에서 이미지를 늘릴 수 있는지 여부에 대한 질문을 다룹니다.
CSS, JavaScript 및 HTML을 사용한 탐색에도 불구하고 작성자는 처음에 앤티앨리어싱으로 인해 실패한 시도에 직면했습니다. 이미지 렌더링과 같은 CSS 기술: 선명한 가장자리는 최신 브라우저에서 효과적인 것으로 입증되었지만 Internet Explorer 9 및 이전 버전에서는 일관성이 없고 지원되지 않았습니다.
제시된 솔루션에는 캔버스 요소를 활용하여 이미지 데이터를 픽셀 단위로 조작하는 것이 포함됩니다. 소스 캔버스는 원본 이미지를 수신하고 대상 캔버스는 개별 픽셀의 크기를 조정하고 그리기 위해 생성됩니다.
<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>
이 방법은 앤티앨리어싱 문제에 대한 해결 방법을 제공하여 흐림 없이 픽셀 단위로 완벽한 크기 조정을 가능하게 합니다. 그러나 이미지 렌더링 속성에 대한 지원은 브라우저와 버전에 따라 다를 수 있다는 점은 주목할 가치가 있습니다.
위 내용은 앤티앨리어싱 없이 브라우저에서 이미지를 늘릴 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!