Imagen de Codificación Base64


Estoy creando un complemento de búsqueda abierta para Firefox/IE y la imagen debe estar codificada en Base64, así que ¿cómo puedo codificar en base 64 el favicon que tengo?

Solo estoy familiarizado con PHP

Author: UnkwnTech, 2008-08-30

5 answers

Por lo que recuerdo, hay un elemento xml para los datos de la imagen. Puede utilizar este sitio web para codificar un archivo (utilice el campo de carga). A continuación, simplemente copie y pegue los datos en el elemento XML.

También puedes usar PHP para hacer esto de la siguiente manera:

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

Use La guía de Mozilla para obtener ayuda sobre la creación de complementos de OpenSearch. Por ejemplo, el elemento icon se usa así:

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

Donde imageData son sus datos base64.

 76
Author: Ross,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-20 08:50:25
$encoded_data = base64_encode(file_get_contents('path-to-your-image.jpg'));    
 11
Author: thefreeman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-24 21:26:44

Mi sinopsis de rfc2397 es:

Una vez que tenga sus datos de imagen codificados en base64, póngalos dentro de las etiquetas con el prefijo "data:{mimetype};base64,", esto es similar al prefijo hecho en el paréntesis de la definición url() en CSS o en el valor citado del atributo src de la etiqueta img en [X]HTML. Puedes probar la url de datos en firefox colocando la línea data:image/... en el campo URL y presionando enter, debería mostrar tu imagen.

Para realmente codificación creo necesitamos repasar todas sus opciones, no solo PHP, porque hay muchas maneras de base64 codificar algo.

  1. Utilice la herramienta de línea de comandos base64. Es parte de la GNU coreutils (v6+) y bastante por defecto en cualquier Cygwin, Lyonux, GnuWin32 instalar, pero no los BSDs he intentado. Cuestión: $ base64 imagefile.ico > imagefile.base64.txt
  2. Utilice una herramienta que ofrece la opción de convertir a base64, como Notepad++ que tiene la característica bajo plugins- > Herramientas MIME - > base64 Encode
  3. Envíese el archivo por correo electrónico y vea el contenido sin procesar del correo electrónico, copie y pegue.
  4. Use una web formulario.

Una nota sobre los tipos mime: Preferiría que usaras uno de image/png image/jpeg o image/gif ya que no puedo encontrar el popular image/x-icon. ¿Debería ser image/vnd.microsoft.icon? También los otros formatos son mucho más cortos.

Compare 265 bytes vs 1150 bytes:

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==
 8
Author: dlamblin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-11-26 18:06:41

Compruebe el siguiente ejemplo

<?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 .'" />'
    ?>
 6
Author: Imran Kabir,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-03 10:29:22

Google me llevó a esta solución (base64_encode). Espero que esto ayude!

 0
Author: OysterD,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-30 11:06:37