simplecontent

PHP Snippets und Beispiele

Inhaltsverzeichnis A-Z Register
Beispiel ausführen

Bilder mit base64 kodieren

Eine Grafik per base64 kodieren und direkt im Code ablegen

Manchmal kann es nützlich sein ein Bild direkt im Quelltext abzulegen. Z.B. für grafisch gestaltete Fehlermeldungen oder Installationshinweise bei Setup-Routinen. Dann muss man sich nicht um Pfade oder Leserechte für die Grafiken kümmern. Und man muss ggf. nur mit einer Datei umgehen. Das sollte man aber nur in Ausnahmefällen also bei sehr speziellen Anwendungen machen. Und nur bei sehr kleinen Dateien, also vor allem GIF oder PNG Format, weniger bei JPG Bildern. Das PHP Code Beispiel:
<?php
/**
* Ein einfaches Upload-Formular um ein Grafik per
* base64 zu kodieren und direkt im Code abzulegen.
*/

// maximale Dateigröße die verarbeitet wird
$maxsize 200000;

// Breite zur Formatierung der bas64-Daten (nur zur besseren Darstellung)
$maxwidth 80;


if (!empty(
$_FILES)){

    if (
$_FILES['theimage']['size'] > $maxsize){

        die (
'maximale Grösse überschritten');
    }

    
$tmp file_get_contents$_FILES['theimage']["tmp_name"]) 
        OR die (
'Kann Datei nicht öffnen');

    
$size getimagesize($_FILES['theimage']["tmp_name"]) 
        OR die (
'Nur Bilddateien möglich');

    
$data wordwrap(base64_encode($tmp), $maxwidth"\n"1);

echo <<< IMGDATA
<pre>
&lt;?php
// Ein Bild direkt im Quelltext speichern und ausgeben
// Name   : 
{$_FILES['theimage']['name']}
// Breite : 
{$size[0]}
// Höhe   : 
{$size[1]}
// Bytes  : 
{$_FILES['theimage']['size']}

// Bilddaten base64 kodiert
$TheImage = <<< EOT
$data
EOT;

header('Content-type: 
{$size['mime']}');
header('Content-Disposition: inline; filename=
{$_FILES['theimage']['name']}');
echo base64_decode($TheImage);
?&gt;
</pre>
IMGDATA;

} else {

echo <<< EOT
<form action="{$_SERVER['PHP_SELF']}" method="post" enctype="multipart/form-data">
<input type="file" name="theimage"><input type="submit" value="Bild hochladen">
</form>
EOT;
}
?>

Dieses PHP Snippet soll in erster Linie als Beispiel und Anregung für eigene Bemühungen dienen.
Gerne darf man es für Projekte aller Art benutzen.
Möchte jemand das Snippet also solches in ähnlicher oder anderer Form veröffentlichen ist ein kleiner Hinweis auf simplecontent.net nicht zuviel verlangt oder Herr Koch?
Für die Abwesenheit von Fehlern kann natürlich keine Gewähr gegeben werden.