고품질을 위해 브라우저에서 이미지 축소(다운샘플)
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

이것은 우리가 양식 접근성에 대해 한 작은 시리즈의 세 번째 게시물입니다. 두 번째 게시물을 놓친 경우 "사용자 초점 관리 : Focus-Visible"을 확인하십시오. ~ 안에

이 튜토리얼은 Smart Forms 프레임 워크를 사용하여 전문적인 JavaScript 양식을 작성하는 것을 보여줍니다 (참고 : 더 이상 사용할 수 없음). 프레임 워크 자체를 사용할 수 없지만 원칙과 기술은 다른 형태의 건축업자와 관련이 있습니다.

CSS Box-Shadow 및 개요 속성은 주제를 얻었습니다. 실제 테마에서 어떻게 작동하는지에 대한 몇 가지 예와 이러한 스타일을 WordPress 블록 및 요소에 적용 해야하는 옵션을 보자.

이 기사는 Envato Market에서 사용할 수있는 최고의 PHP 양식 빌더 스크립트를 탐색하여 기능, 유연성 및 설계를 비교합니다. 특정 옵션으로 다이빙하기 전에 PHP 양식 빌더가 무엇인지, 왜 사용하는지 이해해 봅시다. PHP 양식

Svelte Transition API는 맞춤형 전환을 포함하여 문서를 입력하거나 떠날 때 구성 요소를 애니메이션하는 방법을 제공합니다.

웹 사이트의 컨텐츠 프레젠테이션을 설계하는 데 얼마나 많은 시간을 소비합니까? 새 블로그 게시물을 작성하거나 새 페이지를 만들 때

이 기사에서 우리는 스크롤 바의 세계로 뛰어들 것입니다. 너무 화려하게 들리지는 않지만 잘 설계된 페이지가 손을 잡고 있습니다.


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

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

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

드림위버 CS6
시각적 웹 개발 도구

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.
