> 웹 프론트엔드 > CSS 튜토리얼 > 브라우저에서 안티앨리어싱 없이 이미지를 늘리는 방법은 무엇입니까?

브라우저에서 안티앨리어싱 없이 이미지를 늘리는 방법은 무엇입니까?

DDD
풀어 주다: 2024-11-03 13:25:03
원래의
288명이 탐색했습니다.

How to Stretch Images Without Antialiasing in the Browser?

브라우저에서 앤티앨리어싱 없이 이미지 늘이기

앤티앨리어싱 없이 이미지를 늘리는 것은 특히 픽셀 아트를 다룰 때 웹 개발자가 직면하는 일반적인 과제입니다. . 전통적으로 CSS, JavaScript, HTML과 같은 방법을 사용하여 이미지를 늘렸지만 안티앨리어싱으로 인해 바람직하지 않은 흐림 현상이 발생하는 경우가 많습니다.

CSS 및 최신 브라우저

최신 버전의 Chrome 및 Firefox에는 이미지 렌더링이라는 새로운 CSS 속성이 도입되었습니다. 이 속성을 픽셀화로 설정하면 이미지를 늘릴 때 앤티앨리어싱을 비활성화할 수 있습니다. 그러나 이 방법은 Chrome과 FF에서 지원이 중단되었기 때문에 아직 신뢰할 수 없습니다.

캔버스 기반 솔루션

캔버스 API는 이미지 스트레칭을 위한 솔루션을 제공합니다. 안티앨리어싱 없이. 아래 코드는 캔버스에서 크기가 조정된 이미지를 생성하는 방법을 보여줍니다.

<code class="javascript">var img = new Image();
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿