canvas drawImage 저장 질문입니다. 채택완료
아무거나만들었어요
7년 전
조회 3,339
</p>
<p><script type="text/javascript">
var canvas = document.getElementById('signature-pad');</p>
<p>function resizeCanvas() {
var ratio = Math.max(window.devicePixelRatio || 1, 1);
canvas.width = canvas.offsetWidth * ratio;
canvas.height = canvas.offsetHeight * ratio;
canvas.getContext("2d").scale(ratio, ratio);
}</p>
<p>window.onresize = resizeCanvas;
resizeCanvas();</p>
<p>document.getElementById('save-png').addEventListener('click', function () {
var data = signaturePad.toDataURL("image/png");</p>
<p>
document.getElementById('clear').addEventListener('drawimage', function () {
var ctx = canvas.getContext('2d');
var backgroundImage = new Image();
ctx = canvas.getContext("2d");
backgroundImage.src= '<a href="https://t1.daumcdn.net/cfile/tistory/25679E435319402A2B';" target="_blank" rel="noopener noreferrer">https://t1.daumcdn.net/cfile/tistory/25679E435319402A2B';</a>
ctx.drawImage(backgroundImage, 0, 0);</p>
<p>});</p>
<p>var imgData = atob(data.split(',')[1]);
var len = imgData.length;
var buf = new ArrayBuffer(len);
var view = new Uint8Array(buf);
var blob, i;</p>
<p>for(i = 0; i < len; i++){
view[i] = imgData.charCodeAt(i) & 0xff;
}</p>
<p>blob = new Blob([view], {type: 'image/png'});
console.log(blob);</p>
<p>var url = URL.createObjectURL(blob);
var a = document.createElement('a');
a.style = "display:none";
a.href = url;
a.download = "review_comment.png";</p>
<p>document.body.appendChild(a);
a.click();</p>
<p>setTimeout(function(){
document.body.removeChild(a);
URL.revokeObjectURL(url); //메모리 해제
}, 100);
});</p>
<p></script></p>
<p>
위의 소스는 canvas를 이용하여 drawImage를 출력한 후 로컬에 이미지파일로 저장이 되게하는 소스입니다.
선을 이용하여 편집한 후 이미지저장은 가능한데 위의 소스처럼 drawImage를 이용하여 이미지를 부른뒤
그 이미지위에 선으로 작업을하고 저장을 하려고 하면 계속 오류가 나네요 ㅜㅜ
Uncaught DOMException: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.
이런식의 오류가 나는데 canvas에서 문법이 잘못되어서 작동이 안되는거같은데 무엇을 고쳐야하는지 감이 오질않아 질문드립니다 ㅜ 고수분들의 조언 부탁드리겠습니다.
댓글을 작성하려면 로그인이 필요합니다.
답변 1개
답변을 작성하려면 로그인이 필요합니다.
로그인