Image Data URIs mit PHP

Image Data URIs sind für manche Anwendungen eine feine Sache. Wozu braucht man die kleinen Helfer? Einfach ausgedrückt: direktes Einbetten von Bildern in eine Seite oder CSS ohne einen zusätzlichen HTTP-Request zu verursachen. Nähere Informationen gibt es bei Wikipedia, besonders geeignet sind die Teile natürlich um kleine Icons direkt einzubetten. Was natürlich nicht schön ist, ist die Tatsache das man zum Beispiel eine Grafik erstmal base64 encoden müsste, um sie zu verwenden. Besonders unschön wird es, wenn man merkt, das Grafiken zu aktualisieren sind.

Beispiel eines Bildes als Data URI

Clever wie wir sind, und auch immer interessiert an der Beschleunigung der Auslieferung einer Webseite kann man das ganze natürlich auch mittels PHP schnell in eine Seite integrieren:

// A few settings
$image = 'logo.jpg';
$imageData = base64_encode(file_get_contents($image));
$src = 'data: '.mime_content_type($image).';base64,'.$imageData;
echo '';

Die %27 sind hierbei übrigens die ‚ – einfach eine Möglichkeit den Image-Src trotzdem noch valide auszugeben, ohne sich in PHP die Finger brechen zu müssen. Wenn man das Ganze in eine Function verpackt und diese in einem Projekt allen Seiten zur Verfügung stellt, kann man mit Sicherheit einen guten Performance-Gewinn erzielen!

Ähnliche Beiträge

10 nützliche PHP Snippets PHP ist eine fast sinnvolle Programmiersprache bei der am Ende alles immer so endet, dass man die gleichen Aufgaben immer wieder erledigen muss. Insof...
Remote Debugging mit PhpStorm und Xdebug Ich habe hier im Moment eine ziemlich komische, historisch gewachsene, Infrastruktur. Mein Entwicklungsrechner ist Windows, auf dem der Entwicklungsse...
Amazon Web Services nur noch mit Signatur Kaum schreibt man mal ein mehrteiliges Tutorial, schon ändert Amazon mal wieder was und nichts stimmt mehr :) Ich könnte jetzt ziemlich fluchen, bring...
PHP beschleunigen mit phpFastCache Je höher die Besucher-Zahlen einer Seite werden, desto mehr Probleme fängt man sich ein. In der Regel kommt man heutzutage auf die Idee, langsamen Web...
KategorienPHPSchlagwörter

18 Antworten auf „Image Data URIs mit PHP“

  1. Ich bekomm leider immer noch Fehler. :-(

    Ich nutz jetzt die in Deinem verlinkten Wiki Artikel beschriebene Möglichkeit. Ist da ein großer Unterschied?

  2. Seht ihr, so etwas passiert wenn man seinen Code nicht ausprobiert ;) Ich habs jetzt zwar immer noch nicht ausprobiert, aber den Code verschlimmbessert! ;)

  3. Ok so meint ich es ja. Deine Frage war da nicht ganz eindeutig für mich. Ich komm mit dem obigen Code bisher auch nicht wirklich klar.

  4. Also entweder ihr versteht mich nicht oder – was ich eher vermute – ich stehe ganz schön auf der Leitung.

    $variable = „mein Wert“;
    echo „Test, $variable“; // Test, mein Wert
    echo ‚Test, $variable‘; // Test, $variable

    Doppelte Anführungszeichen = Variable wird geparst.
    Einfache Anführungszeichen = Variable wird nicht geparst.

    So habe ich es gelernt, so war es schon immer. Oder nicht?

    Im obigen Beispiel steht $src zwischen einfachen Anführungszeichen, dementsprechend wird die Variable nicht geparst sondern einfach ausgegeben, als wenn es Text wäre. Das hat ja auch mein Test ergeben.

    Mittlerweile bin ich leicht verwirrt, wäre nett, wenn jemand die Güte hätte Licht ins Dunkel zu bringen :)

  5. @Enno das ist ein gewaltiger Unterschied ob Hochkommata oder doppelte Anführungszeichen. Google mal, wirst schnell fündig.

  6. Doch, doch, PHP läuft schon. Aber seit wann lassen sich den Variablen in einfachen Anführungszeichen angeben? In doppelten kenn ich ja, aber in einfachen?

  7. @Enno Wenn da nur ein $str ausgegeben wird, stimmt was nicht mit deiner PHP Konfiguration oder sonst etwas. Kann es sein das da PHP erst gar nicht anspringt? ;)
    @Markus hat natürlich recht, richtiger wäre an der Stelle ein finfo_open(FILEINFO_MIME_TYPE);

  8. Nette Sache, hab gleich mal ein wenig rumgespielt. mime_content_type ist allerdings veraltet und man sollte auf finfo_open(FILEINFO_MIME_TYPE); ist es glaub ich, setzen.

  9. Ich hatte in den Kommentar HTML-Code eingefügt, der nicht übernommen wurde.
    Ich verstehe die Sache mit dem %27, nicht so richtig. Warum nimmst du für das echo nicht doppelte Anführungszeichen („) und für das Attribut src dann einfache (‚)? Damit würdest du doch das %27-Gedöns leichter umgehen, oder?

  10. @Tom: Ich gehe mal davon aus das man in der heutigen Zeit alle Seiten cached die man ausliefert ;)
    @Enno: Wer hat wen gefressen? ;) Ansonsten: da sind schon ‚ vom echo des PHP

  11. Dann werden die Bilder bei jedem Aufruf neu codiert. Belastet den Server ja unnötig.
    Um hier noch die Performance zu erhöhen müsste ein Cache der base64-Daten dazu, oder?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.