HTML5 캔버스를 사용하여 이미지를 회전하는 방법은 무엇입니까? (예시 시연)
최근에 갑자기 js에서 이미지 회전 기능이 공부하고 싶었어요. 이전 구현 방법에 대해서는 먼저 이야기하지 않겠습니다. HTML5는 이제 매우 좋습니다. 주로 HTML5의 이미지 회전을 이해해 보겠습니다.
예시 데모:
http://www.imqing.com/demo/rotateImg.html
원리: 회전하려면 캔버스 개체를 사용하세요.
구현 방법: 먼저 캔버스 요소를 만든 다음 img 요소를 캔버스에 그립니다. 그러나 실제로 이는 이미지가 회전되지 않는 기본 상황입니다. 그림을 90도 회전해야 하는 경우 그리기 전에 캔버스를 90도 회전해야 합니다.
설명은 다음과 같습니다.
그림의 좌표는 왼쪽 상단부터 계산되며, 회전할 때 아래쪽이 양의 방향입니다. 캔버스에서 이 좌표는 실제로 Rotate에 있으므로 최종 그림이 다릅니다.
당시 저도 픽픽을 이용해서 일정한 각도를 회전시킨 후 시작점의 좌표를 측정했는데, 원래의 회전은 이렇다는 것을 깨달았습니다.
코드:
<body> <button onclick="rotateImg('testImg', 'left')">向左旋转</button> <button onclick="rotateImg('testImg', 'right')">向右旋转</button><br/> <img src="./test.jpg" id="testImg"/> <script> function rotateImg(pid, direction) { //最小与最大旋转方向,图片旋转4次后回到原方向 var min_step = 0; var max_step = 3; var img = document.getElementById(pid); if (img == null)return; //img的高度和宽度不能在img元素隐藏后获取,否则会出错 var height = img.height; var width = img.width; var step = img.getAttribute('step'); if (step == null) { step = min_step; } if (direction == 'right') { step++; //旋转到原位置,即超过最大值 step > max_step && (step = min_step); } else { step--; step < min_step && (step = max_step); } img.setAttribute('step', step); var canvas = document.getElementById('pic_' + pid); if (canvas == null) { img.style.display = 'none'; canvas = document.createElement('canvas'); canvas.setAttribute('id', 'pic_' + pid); img.parentNode.appendChild(canvas); } //旋转角度以弧度值为参数 var degree = step * 90 * Math.PI / 180; var ctx = canvas.getContext('2d'); switch (step) { case 0: canvas.width = width; canvas.height = height; ctx.drawImage(img, 0, 0); break; case 1: canvas.width = height; canvas.height = width; ctx.rotate(degree); ctx.drawImage(img, 0, -height); break; case 2: canvas.width = width; canvas.height = height; ctx.rotate(degree); ctx.drawImage(img, -width, -height); break; case 3: canvas.width = height; canvas.height = width; ctx.rotate(degree); ctx.drawImage(img, -width, 0); break; } } </script> </body>
설명: canvas.width와 height는 설명할 필요가 없습니다. 그래야 합니다. 회전할 필요는 없겠죠? 핵심은 drawImage(img, x, y);
drawImage(img, x, y);
其中的x,y是指从哪一点开始画,因为整个坐标系统旋转了,所以,x,y不一样,比如step=1
,图片向右旋转了90度,即坐标系旋转了90度,那么起始位置应该是x = 0, y= img.height
step=1
과 같이 그림이 오른쪽으로 90도 회전합니다. 즉, 좌표계가 90도 회전한 경우 시작 위치는 x = 0, y= img여야 합니다. 키
🎜위 내용은 HTML5 캔버스를 사용하여 이미지를 회전하는 방법은 무엇입니까? (예시 시연)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

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

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

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

HTML의 테이블 테두리 안내. 여기에서는 HTML의 테이블 테두리 예제를 사용하여 테이블 테두리를 정의하는 여러 가지 방법을 논의합니다.

HTML의 Nested Table에 대한 안내입니다. 여기에서는 각 예와 함께 테이블 내에 테이블을 만드는 방법을 설명합니다.

HTML 여백-왼쪽 안내. 여기에서는 HTML margin-left에 대한 간략한 개요와 코드 구현과 함께 예제를 논의합니다.

HTML 테이블 레이아웃 안내. 여기에서는 HTML 테이블 레이아웃의 값에 대해 예제 및 출력 n 세부 사항과 함께 논의합니다.

HTML 입력 자리 표시자 안내. 여기서는 코드 및 출력과 함께 HTML 입력 자리 표시자의 예를 논의합니다.

HTML 순서 목록에 대한 안내입니다. 여기서는 HTML Ordered 목록 및 유형에 대한 소개와 각각의 예에 대해서도 설명합니다.

HTML onclick 버튼에 대한 안내입니다. 여기에서는 각각의 소개, 작업, 예제 및 다양한 이벤트의 onclick 이벤트에 대해 설명합니다.

HTML에서 텍스트 이동 안내. 여기서는 Marquee 태그가 구문과 함께 작동하는 방식과 구현할 예제에 대해 소개합니다.
