2013-10-11 4 views
2

Я работаю над веб-приложением, где пользователь может создавать проекты в Svg. Я хочу преобразовать проект svg в файл изображения png на стороне клиента. Я нашел решение использовать canvas, это хорошо работает в firefox, но в chrome он генерирует ошибку безопасности.Преобразование Svg в Png со стороны клиента

проверить код ниже спасибо: -

var mainsvg=document.getElementById('svgforImg');       
var canvas=document.getElementById('canvas');      
var ctx = canvas.getContext("2d"); 
         var data=mainsvg.innerHTML; 
         var DOMURL = self.URL || self.webkitURL || self; 
         var svg = new Blob([data], { 
           type: "image/svg+xml;charset=utf-8" 
         }); 
         var url = DOMURL.createObjectURL(svg); 
         var img = new Image(); 
img.onload = function() { 
           ctx.drawImage(img, 0, 0); 
           DOMURL.revokeObjectURL(url);         
           var imageurl = canvas.toDataURL("image/png"); 
} 

Теперь моя переменная ImageUrl содержит изображение 'base64 PNG. это работает в Firefox. Но в хромированной линии

var imageurl = canvas.toDataURL("image/png"); 

произвести ошибку безопасности.

Любая помощь будет высоко оценена.

+0

Возможный дубликат ["DOM Exception 18" с холста] (http://stackoverflow.com/questions/13829525/dom-exception-18-from-canvas) –

+0

Значит, мне нужно перемещаться по серверной стороне чтобы получить изображение, преобразованное как для хрома, так и для firefox. – RashFlash

+1

Да, возможно (если не требуется последняя версия версии хром). Если svg достаточно прост, вам может быть повезло, например, canvg - http://code.google.com/p/canvg/. –

ответ

0

Я думаю, что это связано с this question. С какого сервера создается SVG? Если он отличается от того, из которого приходит ваше приложение (помните: субонсы важны!), Вы могли бы добавить нужные http-заголовки на исходном сервере.

+0

, как вы можете видеть по коду, SVG находится в DOM. то же место, где создается холст – RashFlash

Смежные вопросы