고품질을 위해 브라우저에서 이미지 축소(다운샘플)
Reduxrespot:
브라우저에서 이미지를 축소할 때 html5 캔버스 요소를 사용하면 이미지 품질이 매우 낮다는 것을 알았습니다. 몇 가지 조사 끝에 에서 보간을 비활성화하면 품질이 향상되지만 여전히 최상의 결과를 얻지 못하는 것으로 나타났습니다.
모범 사례
단일 단계 다운샘플링
큰 이미지를 작은 크기로 줄여야 하는 상황에 권장됩니다. 이미지 단일 단계 다운샘플링을 사용합니다. 단계는 다음과 같습니다.
- drawImage() 메서드를 사용하여 원본 이미지를 축소된 크기의 캔버스에 그립니다.
- 축소된 이미지의 데이터를 얻으려면 getImageData()를 사용하세요.
- putImageData()를 사용하여 축소된 데이터를 새 캔버스에 그립니다.
다음 코드 예제로 달성:
const originalImage = new Image(); originalImage.onload = () => { const originalCanvas = document.createElement('canvas'); originalCanvas.width = desiredWidth; originalCanvas.height = desiredHeight; const originalCtx = originalCanvas.getContext('2d'); originalCtx.drawImage(originalImage, 0, 0, desiredWidth, desiredHeight); const scaledData = originalCtx.getImageData(0, 0, desiredWidth, desiredHeight); const scaledCanvas = document.createElement('canvas'); scaledCanvas.width = desiredWidth; scaledCanvas.height = desiredHeight; const scaledCtx = scaledCanvas.getContext('2d'); scaledCtx.putImageData(scaledData, 0, 0); };
다단계 다운샘플링
한 단계 다운샘플링으로 품질이 충분하지 않은 경우 , 다단계 다운샘플링을 사용할 수 있습니다. 이는 더 작은 비율을 사용하여 단일 단계 다운샘플링을 반복적으로 수행함으로써 달성됩니다.
다음은 2단계 다운샘플링의 코드 예입니다.
const originalImage = new Image(); originalImage.onload = () => { // 第一步:缩小 50% const firstCanvas = document.createElement('canvas'); firstCanvas.width = originalImage.width / 2; firstCanvas.height = originalImage.height / 2; const firstCtx = firstCanvas.getContext('2d'); firstCtx.drawImage(originalImage, 0, 0, firstCanvas.width, firstCanvas.height); // 第二步:缩小 50% const secondCanvas = document.createElement('canvas'); secondCanvas.width = firstCanvas.width / 2; secondCanvas.height = firstCanvas.height / 2; const secondCtx = secondCanvas.getContext('2d'); secondCtx.drawImage(firstCanvas, 0, 0, secondCanvas.width, secondCanvas.height); const finalImage = new Image(); finalImage.src = secondCanvas.toDataURL(); };
흐림 문제
다단계 다운샘플링으로 인해 이미지가 흐려질 수 있습니다. 이 문제를 해결하려면 다음 기술을 사용할 수 있습니다.
- 이미지 선명화: 컨벌루션 필터 또는 기타 선명화 기술을 사용하여 이미지 가장자리를 향상할 수 있습니다.
- 더 높은 품질의 보간 알고리즘 사용: 예를 들어 쌍선형 또는 쌍삼차 보간은 최근접 이웃 보간보다 더 나은 품질을 제공할 수 있습니다.
- 더 작은 단계로 다운샘플링 수행: 예를 들어 2단계 다운샘플링 대신 각 단계에서 크기를 50씩 줄이는 3단계 다운샘플링을 수행합니다. 각 단계마다 크기가 33%씩 줄어듭니다. % .
위 내용은 HTML5 Canvas를 사용하여 브라우저에서 고품질 이미지 축소를 달성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

CSS 그리드는 복잡하고 반응이 좋은 웹 레이아웃을 만드는 강력한 도구입니다. 디자인을 단순화하고 접근성을 향상 시키며 이전 방법보다 더 많은 제어를 제공합니다.

기사는 반응 형 설계에서 공간의 효율적인 정렬 및 분포를위한 레이아웃 방법 인 CSS Flexbox에 대해 설명합니다. Flexbox 사용을 설명하고 CSS 그리드와 비교하고 브라우저 지원 세부 사항을 설명합니다.

이 기사는 Viewport Meta 태그, 유연한 그리드, 유체 미디어, 미디어 쿼리 및 상대 장치를 포함하여 CSS를 사용하여 반응 형 웹 사이트를 만드는 기술에 대해 설명합니다. 또한 CSS 그리드 및 Flexbox를 함께 사용하여 CSS 프레임 워크를 권장합니다.

이 기사는 요소 치수 계산 방법을 제어하는 CSS 박스 크기 속성에 대해 설명합니다. Content-Box, Border-Box 및 Padding-Box와 같은 값과 레이아웃 설계 및 형태 정렬에 미치는 영향을 설명합니다.

기사는 CSS, 주요 특성 및 JavaScript와 결합 된 애니메이션 작성에 대해 논의합니다. 주요 문제는 브라우저 호환성입니다.

기사는 3D 변환, 주요 속성, 브라우저 호환성 및 웹 프로젝트에 대한 성능 고려 사항에 대한 CSS 사용에 대해 논의합니다. (문자 수 : 159)

이 기사는 CSS 그라디언트 (선형, 방사형, 반복)를 사용하여 웹 사이트 비주얼을 향상시키고 깊이, 초점 및 현대적인 미학을 추가합니다.

기사는 CSS의 의사 요소, HTML 스타일을 향상시키는 데 사용 및 의사 급의 차이점에 대해 설명합니다. 실제 사례를 제공합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구
