Встроенное изображение Base64 не будет отображаться в браузере Dolphin или Android Stock - PullRequest
2 голосов
/ 07 сентября 2011

Я гуглил эту проблему весь день и, похоже, не могу найти нигде поиска, где бы встречались слова Dolphin и Base64 Image или Data URL. Но когда я нахожу статьи о простом встраивании изображений base64 в целом, они почти все говорят, что это работает почти во всех браузерах, кроме IE. Конечно, я не могу просто просмотреть источник проклятой страницы или какие-либо консоли ошибок на устройстве (Samsung Galaxy Tab Gingerbread), чтобы увидеть, что интерпретирует страница. Все, что я получил? где изображение должно быть. Работает на Chrome и Opera, но не работает ни Dolphin, ни стандартный браузер.

По сути, у меня есть сторонний элемент управления для подписи, изображение подписи которого возвращается мне в виде строки в кодировке base64. Затем я беру эту строку в кодировке base64, преобразую ее в DataURL и назначаю ее в качестве src для моего элемента управления img. Работает как Charm в Chrome и Opera, но не в любом из мобильных браузеров, над которыми мне нужно работать.

 var canvas = signaturestr.toDataURL("image/png") //Have also tried jpg and bmp
 $("#image").attr("src", canvas)

Это мне дает? где изображения должны быть. Поэтому мне либо нужен способ получить URL-адрес данных и сделать его приемлемым для этих браузеров, либо я должен иметь возможность использовать необработанный код base64 для генерации изображения. Также важно отметить, что это автономное приложение, и мне нужно, чтобы все решения были в javascript или jquery.

Редактировать: Обнаружено, что изображения base64 с других веб-сайтов (включая аватары с форумов stackoverflow) действительно появляются в этих браузерах. Попытался уменьшить размер моего изображения, и все же не повезло. Все еще получите альтернативный текст и? Размер определенно не проблема. Уменьшил мое изображение до меньшего размера, чем у аватара, который работает. Действительно в растерянности относительно того, почему это изображение не работает в этих браузерах. Похоже, точно так же, как изображения, которые работают.

Ответы [ 2 ]

5 голосов
/ 12 апреля 2012

У меня была похожая проблема, и я нашел это:

Когда вы пытаетесь загрузить файл JPEG, dataURL неверен ... он начинается с data:base64 вместо data:image/jpeg;base64. Я обошёл проблему с:

var image = new Image();
image.onload = doSomethingElse();
image.src = myDataURL.replace('data:base64', 'data:image/jpeg;base64');

Файлы PNG вроде бы работают нормально.

Я тестировал с помощью Android 4 (Ice Cream Sandwich), и он отлично работает - даже загружает большие фотографии прямо с устройства.

1 голос
/ 28 сентября 2011

Был в состоянии просто повторно отобразить захваченную подпись на новом экземпляре отключенного элемента управления вместо преобразования в изображение и отображения таким образом Работает точно так же.

...