2008-08-30 8 views
52

Ich baue ein offenes Such-Add-on für Firefox/IE und das Image muss Base64-codiert werden, also wie kann ich Base 64 codieren das Favicon, das ich habe?Base64 Encoding Image

Ich bin nur vertraut mit PHP

Antwort

74

Soweit ich mich erinnere, gibt es ein XML-Element für die Bilddaten. Sie können diese website verwenden, um eine Datei zu verschlüsseln (verwenden Sie das Upload-Feld). Kopieren Sie dann die Daten und fügen Sie sie in das XML-Element ein.

Sie könnten auch PHP, dies zu tun, wie so:

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

Verwenden Mozilla's guide Hilfe zur Plugins OpenSearch- zu schaffen. Zum Beispiel wird das Symbol Element wie folgt verwendet:

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

Wo imageData sind Ihre base64-Daten.

+1

base64_encode in diesem Fall wird nur das "Resource Handle" des Bildes, glaube ich, wenn überhaupt, kodieren. Sie müssten den tatsächlichen Inhalt der Datei einlesen. Die Verwendung der base64-Encoder-Website sollte jedoch funktionieren. –

+1

Dies funktioniert überhaupt nicht für mich. '$ im' ist eine 'Ressource' und ich erhalte einen Fehler 'base64_encode() erwartet, dass Parameter 1 eine Zeichenfolge ist, Ressource gegeben' –

+2

Die obigen Kommentare beziehen sich auf eine vorherige Bearbeitung, hakre hat meinen Fehler behoben. @stevether das sollte jetzt funktionieren. – Ross

0

Google me (base64_encode) zu this Lösung geführt. Hoffe das hilft!

+1

ja, ich weiß, wie es zu kodieren, sondern, wie es nur die Bilddaten in dorthin zu gelangen codiert werden. – UnkwnTech

8

Meine Synopse rfc2397 ist:

Sobald Sie Ihre Base64-codierte Bilddaten es ausdrückte in den < Bild> </Bild> -Tags mit dem Präfix „data:{mimetype};base64,“ haben dies auf die Vorfixierung in der getan ähnlich ist Klammer von url() Definition in CSS oder in dem angegebenen Wert des src Attributs des Tags img in [X] HTML. Sie können die Daten-URL in Firefox testen, indem Sie die Zeile data:image/... in das URL-Feld eingeben und die Eingabetaste drücken, es sollte Ihr Bild anzeigen.

Für die tatsächliche Codierung denke ich, wir müssen über alle Ihre Optionen gehen, nicht nur PHP, , weil es so viele Möglichkeiten gibt, um etwas zu kodieren base64.

  1. Verwenden Sie das Befehlszeilenprogramm base64. Es ist Teil des GNU coreutils (v6 +) und so ziemlich Standard in jedem Cygwin, Linux, GnuWin32 installieren, nicht aber die BSDs ich versuchte. Problem: $ base64 imagefile.ico > imagefile.base64.txt
  2. ein Tool, das die Möglichkeit bietet, um base64 zu konvertieren, wie Notepad++, die die Funktion hat unter plugins-> MIME tools-> base64 Encode
  3. E-Mail an sich selbst die Datei und sehen die rohen E-Mail-Inhalte, kopieren und Einfügen.
  4. Verwenden Sie eine webform.

Ein Hinweis auf Mime-Typ: Ich würde Sie eine image/pngimage/jpeg oder image/gif bevorzugen, wie ich die beliebtesten image/x-iconcan't find. Sollte das image/vnd.microsoft.icon sein? Auch die anderen Formate sind viel kürzer.

vergleichen 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 - Die Kürze ist akzeptabel, aber vollere Erklärungen sind besser. http://stackoverflow.com/questions/how-to-answer – Michal

6

überprüfen Sie das folgende Beispiel

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