이미지를 클릭 할 때 이미지가 90도 회전하도록하려고하지만 180도 회전 만합니다. 클릭 할 때마다 90도 이동하려면 어떻게해야합니까?
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>Flipping photo in a canvas tag</title>
<style>
#canvas {cursor: pointer;}
canvas {
height: 50vh;
}
</style>
</head>
<body>
<label>Image File:</label>
<br/>
<input type="file" id="imageLoader" name="imageLoader" />
<h1>Example of using <code><canvas></code></h1>
<p>This example shows how a photo is loaded in a <code><canvas></code> tag and then flipped.</p>
<p>Click on the photo to flip (provided, of course, that your browser supports <code><canvas></code>)</p>
<canvas id="canvas" style="border:1px red solid;"></canvas>
<a download="new-image.png" id="download">Download</a>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script type="text/javascript">
var imageLoader = document.getElementById('imageLoader');
imageLoader.addEventListener('change', handleImage, false);
var can = document.getElementById('canvas');
var ctx = can.getContext('2d');
var img = new Image();
function handleImage(e) {
var reader = new FileReader();
reader.onload = function(event) {
img.onload = function() {
can.width = img.width;
can.height = img.height;
ctx.drawImage(img, 0, 0, img.width, img.height);
ctx.save();
}
img.src = event.target.result;
}
reader.readAsDataURL(e.target.files[0]);
}
can.onclick = function() {
console.log('here');
ctx.translate(img.width - 1, img.height - 1);
ctx.rotate(Math.PI);
ctx.drawImage(img, 0, 0, img.width, img.height);
var button = document.getElementById('download');
button.setAttribute( 'href', can.toDataURL('image/png', 1) );
};
</script>
<p><a href="http://www.phpied.com/photo-canvas-tag-flip/">Blog post is here</a></p>
</body>
</html>
- 답변 # 1
관련 자료
- python - 움직이는 이미지는 전체 캔버스를 이동합니다
- javascript - 캔버스에서 배경 이미지 설정하기 (패브릭 JS)
- javascript - 캔버스에서 이미지를 초기화하는 방법은 무엇입니까?
- javascript - Firefox 및 Microsoft Edge에서 이미지가 작동하지 않는 캔버스 다운로드
- java - 캡처시 이미지 회전
- python - 파이 게임에서 이미지를 회전시키는 간단한 방법이 있습니까?
- c# - 캔버스 이미지가 매끄럽게 스크롤되지 않음
- javascript - 캔버스에서 자른 이미지 그리기
- Dropzonejs 자동 회전 이미지
- JavaScript로 다운로드 한 캔버스 이미지의 배경색을 흰색으로 만들려면 어떻게해야합니까?
- javascript - 캔버스가 이미지를 렌더링하지 않음
- ViewPropertyAnimator를 사용하여 첫 번째 실행 후 Android 이미지가 회전하지 않음
- java - 시계 반대 방향으로 하나의 원을 회전시키는 방법
- javascript - iPad에서 캔버스 이미지 생성
- javascript - 목록 위에 마우스를 올려 놓으면 이미지 회전 및 마우스를 놓으면 다시 회전
- c# - 값을 나타 내기 위해 png 이미지를 회전시키는 방법은 무엇입니까?
- javascript - 업로드 한 이미지를 90도 회전으로 회전
- python - Builder/kv 파일 및 NumericProperty를 사용하지 않고 Kivy에서 이미지 회전
- 자바 스크립트에서 캔버스와 이미지 요소를 결합 할 수 있습니까?
- android - Camera X 라이브러리를 사용하여 이미지를 캡처 한 후 이미지를 자동으로 회전하는 방법은 무엇입니까?
관련 질문
- javascript : 브라우저에서 페이지 로드 시 오디오 자동 재생
- javascript : jQuery 인라인을 어떻게 사용합니까?
- javascript : [복제] 클릭 시 버튼 색상 전환
- javascript : 버튼 클릭으로 커서를 변경하는 방법
- javascript : TypeError: data.forEach는 함수가 아닙니다.
- javascript : .click 토글 기능을 어떻게 재설정합니까?
- javascript : HTML 전화번호 유효성 검사
- javascript : jquery를 사용하여 카테고리에 따라 관련 없는 div를 페이드 아웃하는 메뉴
- javascript : html, css, js로 onclick 이벤트를 어떻게 할 수 있습니까?
- javascript : codepen.io 프로필 이미지 업로드 JQuery가 작동하지 않음
Math.PI
180 ° 회전합니다. 와이즈 비즈n * Math.PI / 180
에 의해 회전 °. 따라서 귀하의 경우n
에 전화해야합니다. .코드에 문제가 있습니다. 항상 회전 중심을 움직이고 있습니다. 따라서 두 번째로 회전하면 해당 중심이 이미 원점에서 어딘가에 있습니다. 이제이 (이동 된) 점을 번역하고 회전 한 다음 그립니다. 아마도 새 이미지가 캔버스 외부에있을 가능성이 높습니다.
따라서
ctx.rotate(Math.PI/2)
를 취소해야합니다ctx.translate(img.width - 1, img.height - 1);
와 회전 후 .예를 보려면 여기를 참조하십시오 : https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/rotate#Rotating_a_shape_around_its_center
예 :
// Rotation by 90° around center at 150,75 ctx.translate(150, 75); ctx.rotate(Math.PI / 2); ctx.translate(-150, -75);