canvas drawImage 저장 질문입니다.

canvas drawImage 저장 질문입니다.

QA

canvas drawImage 저장 질문입니다.

본문


<script type="text/javascript">
var canvas = document.getElementById('signature-pad');
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);
}
window.onresize = resizeCanvas;
resizeCanvas();
document.getElementById('save-png').addEventListener('click', function () {
var data = signaturePad.toDataURL("image/png");

document.getElementById('clear').addEventListener('drawimage', function () {    
var ctx = canvas.getContext('2d');
var backgroundImage = new Image();
 ctx = canvas.getContext("2d");
 backgroundImage.src= 'https://t1.daumcdn.net/cfile/tistory/25679E435319402A2B';
 ctx.drawImage(backgroundImage, 0, 0);
});
var imgData = atob(data.split(',')[1]);
var len = imgData.length;
var buf = new ArrayBuffer(len);
var view = new Uint8Array(buf);
var blob, i;
for(i = 0; i < len; i++){
    view[i] = imgData.charCodeAt(i) & 0xff;
}
blob = new Blob([view], {type: 'image/png'});
console.log(blob);
var url = URL.createObjectURL(blob);
var a = document.createElement('a');
a.style = "display:none";
a.href = url;
a.download = "review_comment.png";
document.body.appendChild(a);
a.click();
setTimeout(function(){
    document.body.removeChild(a);
    URL.revokeObjectURL(url); //메모리 해제
}, 100);
});
</script>

 

위의 소스는 canvas를 이용하여 drawImage를 출력한 후 로컬에 이미지파일로 저장이 되게하는 소스입니다.

선을 이용하여 편집한 후 이미지저장은 가능한데 위의 소스처럼 drawImage를 이용하여 이미지를 부른뒤

그 이미지위에 선으로 작업을하고 저장을 하려고 하면 계속 오류가 나네요 ㅜㅜ

 

Uncaught DOMException: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.

 

이런식의 오류가 나는데 canvas에서 문법이 잘못되어서 작동이 안되는거같은데 무엇을 고쳐야하는지 감이 오질않아 질문드립니다 ㅜ 고수분들의 조언 부탁드리겠습니다.

이 질문에 댓글 쓰기 :

답변 1

해당코드에 원본샘플을 보고 그대로 돌려보면서 해야알텐데 뭔가 서버에서 빠진거 아닐까요?

확인결과 로컬에서 테스트중인데 웹상의 이미지를 가져와 사용을 하여 크로스도메인 오류가 생긴것 같습니다ㅎㅎ 답변주셔서 감사드립니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 93
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT