2016-08-05 5 views
3

У меня есть приложение, в котором пользователи должны передавать данные друг другу (не могут проходить через сервер). Я подумал, что было бы неплохо сделать изображение из этих данных и отправить им это изображение (QR-коды не будут работать по разным причинам).canvas.toDataURL() создает разные строки с кодировкой base64 в разных браузерах

Я пришел accross this github repo, который выглядел многообещающим, и implemented it, here.

Проблема, по разным причинам, the output will be different for different browsers (и, возможно, ОС). Попробуйте сами. Кодируйте различные сообщения в разных браузерах, и вы увидите разные результаты с кодировкой base64.

Есть ли хорошее решение? Могу ли я реализовать стороннюю библиотеку холста? Может быть, использовать FileReader.readAsDataURL()?

+2

[Родственные] (http://stackoverflow.com/questions/36273990/canvas2d-todataurl-different-output-on-different-browser/36274211#36274211), но так как вы просите использовать полотно, то нет, нет решения. Даже FileReader будет использовать данные декодирования/перекодировки с холста, что также указывается в ответе, на который вы указываете, на браузере и даже на машине. Поэтому, если вам нужно пройти через API холста, вы будете зацикливаться на разных выходах. – Kaiido

+1

Думая немного больше об этом, возможным решением было бы сделать кодирование самостоятельно, непосредственно из js, без использования холста. – Kaiido

+1

Да, я подумал, что, может быть, его кодирование будет хорошим, но надеялся найти библиотеку, которую я мог бы использовать – Adam

ответ

1

Хорошо, в конце концов, мне пришлось использовать стороннюю библиотеку обработки изображений и не могли зависеть от функции холста браузера. Here's my solution :)

Я построил его поверх this image processing library.

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