Tôi cố gắng để tải một hình ảnh svg vào vải cho thao tác Pixel Tôi cần một phương pháp như toDataURL
hoặc getImageData
cho svgCó tương đương với phương pháp toDataURL của canvas cho SVG không?
trên Chrome/Safari tôi có thể cố gắng làm việc đó thông qua và hình ảnh và canvas
var img = new Image()
img.onload = function(){
ctx.drawImage(img,0,0) //this correctly draws the svg image to the canvas! however...
var dataURL = canvas.toDataURL(); //SECURITY_ERR: DOM Exception 18
var data = ctx.getImageData(0,0,img.width, img.height).data //also SECURITY_ERR: DOM Exception 18
}
img.src = "image.svg" //that is an svg file. (same domain as html file :))
Nhưng tôi nhận được lỗi bảo mật. Bất kỳ cách nào khác?
Đây là một bản demo trực tiếp của vấn đề http://clstff.appspot.com/gist/462846 (bạn có thể xem mã nguồn)
Là hình ảnh SVG đến từ một miền khác nhau? Nếu có, bạn không thể gọi 'toDataURL' hoặc' getImageData' vì canvas không còn "origin-clean" nữa. –
Nó đến từ miền * cùng *. Tôi thậm chí đã cố gắng làm 'img.src =" dữ liệu: hình ảnh/svg + xml; base64, ... "' nhưng điều đó cũng không làm việc –
Điều này có vẻ là một lỗi trong Webkit: https: //bugs.webkit. org/show_bug.cgi? id = 39059 – stefanw