Firefox и Chrome не будут декодировать файлы изображений base64 или pdf - PullRequest
1 голос
/ 30 марта 2012

Я пытаюсь декодировать изображения в кодировке base64 в браузере, используя схему data uri.

Вот как выглядит мой html:

<img src="data:image/png;base64,base64_string_here" 
  alt="base64 image name" width="600" height="400" border="1" />

Chrome и Firefox не могут декодировать эти изображения и отображать изображение по умолчанию «изображение не может загрузить».Я проверил правильность изображений base64, которые я передаю в браузер.На самом деле Safari не имеет проблем с отображением одинаковых изображений.

Я попытался заставить браузеры декодировать аналогичные PDF-файлы в кодировке base64, но это тоже не сработало.(Опять же, он не работал на Chrome и Firefox, но работал на Safari.)

<img src="data:application/pdf;base64,base64_string_here" 
  alt="base64 pdf name" width="600" height="400" border="1" />

Версия Chrome: 18.0, версия FF: 11.0

Кто-нибудь знает, что здесь может быть не так??(Если это поможет - изображения, закодированные в base64, которые я пытаюсь отобразить, являются этикетками доставки USPS).

Ответы [ 4 ]

0 голосов
/ 18 октября 2018

Я знаю, что это действительно старый вопрос, но недавно я столкнулся с той же проблемой. (Происходит из возвращаемых меток USPS) Я исправил это, преобразовав TIFF со строковым кодированием Base64 в растровое изображение строкового Base64 (хотя вы можете использовать любой тип изображения, какой пожелаете).

Я использовал C # для конвертации изображений:

    Byte[] arrTiff = Convert.FromBase64String(FixBase64ForImage(oeVS.LabelImage));
    System.IO.MemoryStream msTiff = new System.IO.MemoryStream(arrTiff);
    Bitmap bmpTiff = new Bitmap((Bitmap)Image.FromStream(msTiff));
    System.IO.MemoryStream msBmp = new System.IO.MemoryStream();
    bmpTiff.Save(msBmp, System.Drawing.Imaging.ImageFormat.Bmp);
    Byte[] arrBmp = msBmp.ToArray();
    string sBMP64 = Convert.ToBase64String(arrBmp);

Затем в html / javascript вы можете использовать это для отображения метки, где sBMP64 является результатом, приведенным выше.

<img src='data:image/bmp;base64,sBMP64'>

BMP работал для моих целей, но вот таблица поддержки изображений браузером: https://en.wikipedia.org/wiki/Comparison_of_web_browsers#Image_format_support

0 голосов
/ 10 апреля 2014

На самом деле, даже если вы указали правильный тип MIME, Chrome, Firefox и Opera не поддерживают файлы .TIF изначально: для их работы требуется плагин.

Здесь вы найдете полезную информацию о поддержке браузером файлов изображений: http://en.wikipedia.org/wiki/Comparison_of_web_browsers#Image_format_support

0 голосов
/ 24 августа 2017

это как-то связано с недавним решением команды Chromium заблокировать навигацию по верхнему фрейму к URL-адресам данных (в обновлении Google Chrome до последней версии 60).

https://productforums.google.com/forum/#!topic/chrome/wvYYcBwJ9FA;context-place=topicsearchin/chrome/category$3AStable%7Csort:relevance%7Cspell:false

0 голосов
/ 29 июля 2013

Chrome и Firefox могут, скорее всего, открывать изображения TIF - если вы скажете им, они являются изображениями TIF. В настоящее время в вашем примере вы говорите им, что это PNG-изображения, что должно быть проблемой ... Попробуйте:

<img src="data:image/tiff;base64,base64_string_here" 
  alt="base64 image name" width="600" height="400" border="1" />
...