Встроенное изображение Base64 не будет отображаться в браузере Dolphin или Android Stock

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

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

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

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

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


person jmease    schedule 07.09.2011    source источник


Ответы (2)


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

Когда вы пытаетесь загрузить файл 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), и он отлично работает — даже большие фотографии загружаются прямо с устройства.

person Community    schedule 12.04.2012
comment
Я часами бьюсь об это головой. Я видел, что URL-адреса данных были другими, но мне не приходило в голову, что Android мог быть неправильным. Работает удовольствие. Благодарность! - person Andrew; 09.05.2013

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

person jmease    schedule 28.09.2011
comment
Привет, Jmease, не могли бы вы немного уточнить и обновить свой ответ, на самом деле я также получаю ту же проблему на устройстве Android и показывает '?' знак Я делаю то же самое, что и вы. заранее спасибо - person Harry; 02.04.2012