2008-08-30 33 views
52

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

no soy más que familiarizado con PHP

Respuesta

74

Por lo que recuerdo, hay un elemento xml para los datos de la imagen. Puede usar este website para codificar un archivo (use el campo de carga). Luego solo copie y pegue los datos en el elemento XML.

También es posible usar PHP para hacer esto, así:

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

Uso Mozilla's guide para la ayuda en la creación de plugins OpenSearch. Por ejemplo, el elemento icono se utiliza como esto:

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

Dónde imageData es sus datos base64.

+1

base64_encode en este caso solo codificará el "identificador de recursos" de la imagen, en caso de que haya algo. Debería leer los contenidos reales del archivo. Sin embargo, el simple hecho de usar el sitio web del codificador de base64 debería funcionar. –

+1

Esto no funciona en absoluto para mí. '$ im' es un' recurso' y obtengo un error 'base64_encode() espera que el parámetro 1 sea cadena, recurso dado' –

+2

Los comentarios anteriores se referían a una edición anterior, hakre corrigió mi error. @stevether esto ahora debería funcionar. – Ross

0

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

+1

Sí sé cómo codificar, pero cómo obtener sólo los datos de la imagen en la que hay para ello ser codificado – UnkwnTech

8

Mi sinopsis de rfc2397 es:

Una vez que tenga su base 64 de datos de imagen codificados ponerlo dentro de los < de imágenes> </Imagen> etiquetas con el prefijo "data:{mimetype};base64," Esto es similar a la fijación previa en el hecho paréntesis de la definición url() en CSS o en el valor cotizado del atributo src de la etiqueta img en [X] HTML. Puedes probar la URL de datos en Firefox poniendo la línea data:image/... en el campo URL y presionando Enter, debería mostrar tu imagen.

Para la codificación real, creo que necesitamos revisar todas sus opciones, no solo PHP, porque hay tantas formas de codificar algo en base64.

  1. Utilice la herramienta de línea de comandos base64. Es parte de la coreutils GNU (v6 +) y prácticamente cualquier defecto en Cygwin, Linux, GnuWin32 instalar, pero no los BSD que he probado. Problema: $ base64 imagefile.ico > imagefile.base64.txt
  2. utilizar una herramienta que cuenta con la opción de convertir a la base 64, como Notepad++ que tiene la característica de bajo Plugins-> MIME herramientas-> Codificar base 64
  3. enviarse por correo electrónico el archivo y ver el contenido de correo electrónico primas, copiar y pegar.
  4. Utilice webform.

Una nota sobre los tipos MIME: yo preferiría que utilice uno de image/pngimage/jpeg o image/gif como can't find la popular image/x-icon. ¿Debería ser image/vnd.microsoft.icon? También los otros formatos son mucho más cortos.

comparar 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== 
10
$encoded_data = base64_encode(file_get_contents('path-to-your-image.jpg'));  
+4

@davidcorda - La brevedad es aceptable, pero las explicaciones más completas son mejores. http://stackoverflow.com/questions/how-to-withour – Michal

6

Comprobar el ejemplo siguiente

<?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 .'" />' 
    ?> 
Cuestiones relacionadas