캔버스에 한 이미지가 배경으로 표시되고 다른 이미지는 이미지의 가운데에 배치됩니다. 지금 나는 완전한 캔버스를 저장하고 싶다. 내 최근의 코드는 캔버스를 두 개의 이미지로 저장하는 방법
당신이 여기 데모를 볼 수 있습니다 .. 그것을 저장하지 않습니다 [ http://jsfiddle.net/himani/gqc9b0qd/3/]var can = document.getElementsByTagName('canvas')[0];
var ctx = can.getContext('2d');
ctx.strokeStyle = '#f00';
ctx.lineWidth = 6;
ctx.lineJoin = 'round';
ctx.strokeRect(40,100,150,100);
var angleInDegrees=0;
var img = document.getElementsByTagName('img')[0];
img.src="http://media1.santabanta.com/full1/Miscellaneous/Cartoon%20Characters/cartoon-characters-47a.jpg";
ctx.drawImage(img,40,100,150,100);
function drawRotated(degrees){
ctx.clearRect(0,0,300,300);
ctx.save();
ctx.translate(40+150/2,100+100/2);
ctx.rotate(degrees*Math.PI/180);
ctx.strokeRect(-150/2,-100/2,150,100);
ctx.drawImage(img,-150/2,-100/2,150,100);
ctx.restore();
}
$("#clockwise").click(function(){
angleInDegrees+=30;
drawRotated(angleInDegrees);
});
$("#save").click(function(){
var ua = window.navigator.userAgent;
if (ua.indexOf("Chrome") > 0) {
// save image without file type
var canvas = document.getElementsByTagName('canvas')[0];
document.location.href = canvas.toDataURL("image/png").replace("image/png", "image/octet-stream");
// save image as png
var link = document.createElement('a');
link.download = "test1.png";
link.href = canvas.toDataURL("image/png").replace("image/png", "image/octet-stream");;
link.click();
}
else {
alert("Please use Chrome");
}
});
원본 교차 제한 오류 보안 오류로 인해 저장에 실패했습니다. 캔버스에 그린 모든 이미지는 웹 페이지 자체와 동일한 도메인에서 가져와야합니다. 캔버스에 다른 도메인의 이미지를 그릴 수는 있지만 그렇게하면 더 이상 canvas.toDataURL()을 할 수 없습니다. – markE
@ markE 그런 다음 올바른 것을하기 위해 할 수있는 일은 무엇입니까? –
웹 페이지와 동일한 도메인의 이미지를 제공해야합니다. – markE