2008-08-30 8 views
52

Я создаю открытую надстройку поиска для Firefox/IE, и изображение должно быть Base64 Encoded, так как я могу закодировать 64-значный значок, который у меня есть?Base64 Encoding Image

Я знаком только с PHP

ответ

74

Насколько я помню, для данных изображения есть элемент xml. Вы можете использовать этот код website для кодирования файла (используйте поле для загрузки). Затем просто скопируйте и вставьте данные в элемент XML.

Вы также можете использовать PHP, чтобы сделать это так:

<?php 
     $im = file_get_contents('filename.gif'); 
     $imdata = base64_encode($im);  
?> 

Использование Mozilla's guide для помощи по созданию OpenSearch плагинов. Например, элемент значок используется следующим образом:

<img width="16" height="16">data:image/x-icon;base64,imageData</> 

Где imageData ваши данные base64.

+1

base64_encode в этом случае будет только кодировать «дескриптор ресурса» изображения, я считаю, если вообще что-то. Вам нужно будет прочитать фактическое содержимое файла. Однако использование этого сайта с кодировкой base64 должно работать. – 2008-11-26 18:19:21

+1

Это не работает для меня. `$ im` является« ресурсом », и я получаю ошибку` base64_encode() ожидает, что параметр 1 является строкой, ресурс задан ` – 2012-04-11 23:08:37

0

Google привел меня к this решения (base64_encode). Надеюсь это поможет!

+1

да, я знаю, как кодировать его, но как получить только данные изображения там для него для кодирования. – UnkwnTech 2008-08-30 11:07:22

8

Мой конспект rfc2397 является:

После того, как вы получили ваши base64 данные, закодированные изображения положить его внутри тегами < Image> </Image> с префиксом «data:{mimetype};base64,» это похоже на предваряя сделано в скобки в определении url() в CSS или в кавычках атрибута src тега img в [X] HTML. Вы можете проверить URL-адрес данных в firefox, поместив строку data:image/... в поле URL и нажав enter, он должен показать ваше изображение.

Для кодирования на самом деле я думаю, что нам нужно пройти все ваши варианты, а не только PHP, , потому что есть так много способов, чтобы base64 что-то кодировал.

  1. Используйте инструмент командной строки base64. Это часть GNU Coreutils (v6 +) и довольно много по умолчанию в любом Cygwin, Linux, GnuWin32 установить, но не BSDs я пытался. Выпуск: $ base64 imagefile.ico > imagefile.base64.txt
  2. Используйте инструмент, который показывает возможность преобразования в base64, как Notepad++, который имеет функцию под plugins-> MIME base64 Tools-> Encode
  3. Электронная почта себе файл и просмотреть содержимое сырья по электронной почте, копировать и вставить.
  4. Использовать webform.

записку о мим-типов: я предпочел бы использовать один из image/pngimage/jpeg или image/gif как я can't find популярный image/x-icon. Должно ли это быть image/vnd.microsoft.icon? Также другие форматы намного короче.

сравнить 265 байт против 1150 байт:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAVFBMVEWcZjTcViTMuqT8/vzcYjTkhhTkljT87tz03sRkZmS8mnT03tT89vTsvoTk1sz86uTkekzkjmzkwpT01rTsmnzsplTUwqz89uy0jmzsrmTknkT0zqT3X4fRAAAAbklEQVR4XnXOVw6FIBBAUafQsZfX9r/PB8JoTPT+QE4o01AtMoS8HkALcH8BGmGIAvaXLw0wCqxKz0Q9w1LBfFSiJBzljVerlbYhlBO4dZHM/F3llybncbIC6N+70Q7OlUm7DdO+gKs9gyRwdgd/LOcGXHzLN5gAAAAASUVORK5CYII= 

data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAD/////ZmZm/2ZmZv9mZmb/ZmZm/2ZmZv9mZmb/ZmZm/2ZmZv9mZmb/ZmZm/2ZmZv9mZmb/ZmZm/2ZmZv///////////2ZmZv9mZmb/ZmZm/2ZmZv9mZmb/ZmZm/2ZmZv9mZmb/ZmZm/2ZmZv9mZmb/ZmZm/2ZmZv9mZmb///////////9mZmb/ZmZm//////////////////////////////////////////////////////9mZmb/ZmZm////////////ZmZm/2ZmZv//////ZmZm/2ZmZv9mZmb/ZmZm/2ZmZv9mZmb/ZmZm/2ZmZv//////ZmZm/2ZmZv///////////2ZmZv9mZmb//////2ZmZv9mZmb/ZmZm/2ZmZv9mZmb/ZmZm/2ZmZv9mZmb//////2ZmZv9mZmb///////////9mZmb/ZmZm////////////////////////////8fX4/8nW5P+twtb/oLjP//////9mZmb/ZmZm////////////////////////////oLjP/3eZu/9pj7T/M2aZ/zNmmf8zZpn/M2aZ/zNmmf///////////////////////////////////////////zNmmf8zZpn/M2aZ/zNmmf8zZpn/d5m7/6C4z/+WwuH/wN/3//////////////////////////////////////+guM//rcLW/8nW5P/x9fj//////9/v+/+w1/X/QZ7m/1Cm6P//////////////////////////////////////////////////////7/f9/4C+7v8xluT/EYbg/zGW5P/A3/f/0933/9Pd9//////////////////////////////////f7/v/YK7q/xGG4P8RhuD/MZbk/7DX9f//////4uj6/zJh2/8yYdv/8PT8////////////////////////////UKbo/xGG4P8xluT/sNf1////////////4uj6/zJh2/8jVtj/e5ro/////////////////////////////////8Df9/+gz/P/////////////////8PT8/0944P8jVtj/bI7l/////////////////////////////////////////////////////////////////2yO5f8jVtj/T3jg//D0/P///////////////////////////////////////////////////////////3ua6P8jVtj/MmHb/+Lo+v////////////////////////////////////////////////////////////D0/P8yYdv/I1bY/9Pd9///////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== 
6

Проверьте следующий пример

<?php 
    // First get your image 
    $image = 'path-to-your-picture/image.jpg'; 
    $picture = base64_encode(file_get_contents($image)); 
    echo '<img width="100" height="100" src="data:image/jpg;base64,'. $picture .'" />' 
    ?> 

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

  • Нет связанных вопросов^_^