php: Bild aus Binärdaten neu erstellen und anzeigen
Lesezeit: 3 Minuten
Ist es möglich, Bilder aus Binärdaten neu zu erstellen (bei Bedarf zu verarbeiten) und anzuzeigen, alles im selben Skript? Etwas wie
// get and display image 1:
$imagedata1 = file_get_contents('assets/test.png');
$imagedata1 = process_using_gd_or_something($imagedata1);
echo "<img src={$imagedata1} >"; // <-- IS THIS (OR EQUIVALENT) POSSIBLE?
// get and display image 2:
//etc...
Ich möchte vermeiden, die Bilder nach der Verarbeitung auf der Festplatte zu speichern und von dort abzurufen oder ein externes Skript zu verwenden …
Sie können dies mit einem tun Daten-URI im Bild src Attribut.
Das Format ist: data:[<MIME-type>][;charset="<encoding>"][;base64],<data>
Seitenlast wird sein verlangsamt weil das Bild abgerufen werden muss Vor die vollständige HTML-Struktur kann geladen und somit gerendert werden. Dies gilt umso mehr, wenn Sie zusätzliche Operationen an dem Bild ausführen. Ihre Website wird sich sehr wahrscheinlich viel langsamer anfühlen, als wenn es sich um ein externes Bild handeln würde.
Inline-Bilder müssen base64-codiert sein, Hinzufügen von 33% zu ihrer Größe.
Wenn Sie über eine vernünftige öffentliche Website mit hohem Datenverkehr sprechen, würde ich empfehlen, dass Sie Ihr Bild extern speichern und zwischenspeichern. Wenn es sich nur um ein kleines Projekt handelt, können Inline-Bilder für Sie funktionieren.
+1 für die Auflistung von Nachteilen. Als Faustregel sollte diese Technik für relativ kleine (größenmäßige) Bilder verwendet werden, z.
– jensgram
15. Januar 2010 um 9:50 Uhr
Danke Pekka! StackOverflow und (seine Benutzer) Regeln!
– Cambiata
15. Januar 2010 um 10:01 Uhr
Krabbe
Eine andere Möglichkeit für Sie besteht darin, ein Skript zu erstellen, das die Bilddaten für die Ausgabe erzeugt, und den Link darauf zu richten.
BEARBEITEN: Entschuldigung, ich habe den Hinweis verpasst, kein externes Skript zu wollen, aber diese Lösung ist effizienter als das Codieren des Bildes in base64.
Du darfst den Content-Length-Header nicht vergessen, sonst funktioniert es nicht. Möglicherweise möchten Sie auch mime_content_type() ersetzen, da es laut Dokumentation veraltet ist.
9243700cookie-checkphp: Bild aus Binärdaten neu erstellen und anzeigenyes