Я делаю следующее:
- Создание документа SVG в виде строки
- Захват его в URL-адресе
blob:
с new Blob
и createObjectURL
- Создайте из него объект
fabric.Image
, используя fromURL
- В обратном вызове
fromURL
вызовите canvas.add
, чтобы добавить новый Image
на холст
Это мой код:
var svg = '<svg xmlns="http://www.w3.org/2000/svg" width="200" height = "200"><foreignObject width="100%" height="100%"><text xmlns = "http://www.w3.org/1999/xhtml" style = "font-size: 40px; color: #FFFFFF">Example</text></foreignObject></svg>';
var svgBlob = new Blob([svg], {type: 'image/svg+xml'});
var svgURL = window.URL.createObjectURL(svgBlob);
fabric.Image.fromURL(svgURL,function(oIMG) {
oIMG.crossOrigin = 'Anonymous';
canvas.add(oIMG);
});
Затем я пытаюсь getImageData:
var dataImage = context.getImageData(0,0,canvas.width,canvas.height).data;
В Chrome выдает ошибку:
Uncaught DOMException: не удалось выполнить 'getImageData' для 'CanvasRenderingContext2D': холст был испорчен данными из разных источников.
Это странно, потому что я никогда не использую какие-либоURL-адреса перекрестного происхождения, только blob:
URL-адресов.
В Firefox это работает отлично.Похоже, проблема связана с Chrome.