Internet Explorer toDataURL () альтернатива? - PullRequest
5 голосов
/ 11 марта 2009

Поэтому мне нужно сохранить данные изображения, нарисованные на элементе <canvas>. И есть метод toDataURL (), который работает в большинстве современных браузеров.

За исключением ... как вы уже догадались ... Internet Explorer.

Я искал в Интернете, но везде люди говорят, что я должен использовать SVG / VML для сохранения данных, но они никогда не упоминают, как. У меня нет опыта работы с SVG / VML в IE, так как мне сохранить изображение, нарисованное в элементе canvas в Internet Explorer? У кого-нибудь есть опыт?

На данный момент мне пришлось продублировать код рисования как на клиенте, так и на сервере, который начинает усложняться. Поэтому, если есть способ, которым я могу извлечь изображение, нарисованное на тэге canvas на стороне клиента (или сервера), это, безусловно, поможет.

Спасибо!

Ответы [ 3 ]

3 голосов
/ 16 сентября 2011
  1. canvas.toDataURL работает в IE9.

  2. Если вам действительно нужно это для старого IE ... ну, я просто дам вам цитату

toDataURL не будет поддерживаться из-за характера метода, используемого Холст Explorer: VML. Мы не нашли способ растеризации VML в растровое изображение. изображения с использованием JS, и даже не со сценарием на стороне сервера. Так что если вы действительно нужно toDataURL в IE, вам придется использовать FxCanvas (http://code.google.com/p/fxcanvas/) или FlashCanvas (http://flashcanvas.net/): два решения на основе Flash.

http://code.google.com/p/explorercanvas/issues/detail?id=77

2 голосов
/ 11 февраля 2013

У меня была такая же проблема. Я хотел преобразовать холст в изображение и открыть его на новой вкладке. Я обнаружил, что преобразование не было проблемой, но открытие в новой ссылке было. Я решил это, сгенерировав изображение, поместив его в тег img и включив его в новую страницу. Затем я открыл новую страницу, используя этот учебник - http://www.javascripter.net/faq/writingt.htm

Вот что я сделал

var canvas = document.getElementById('canvas1');
var dataURL = canvas.toDataURL();
var width = parseInt($("#main").width()); //main is the div that contains my canvas
var height = parseInt($("#main").height());
newWindow("<img src=\"" + dataURL + "\"/>");
function newWindow(content) {
    top.consoleRef = window.open("", "Organisational Structure",
        "width="+width+",height="+height
        + ",menubar=0"
        + ",toolbar=1"
        + ",status=0"
        + ",scrollbars=1"
        + ",resizable=1")
    top.consoleRef.document.writeln(
        "<html><head><title>Console</title></head>"
        + "<body bgcolor=white onLoad=\"self.focus()\">"
        + content
        + "</body></html>"
    )
    top.consoleRef.document.close()
}
1 голос
/ 11 марта 2009

Возможно, вы сможете получить VML и то же самое, но это формат XML, так что это, вероятно, не то, что вы хотите. Невозможно получить изображение из IE без использования плагина.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...