Mailinglisten-Archive |
Hallo Ulrich,
Ulrich Wiederhold wrote:
> ich sitze seit 2 Wochen daran, mir eine Homepage für meine Fotos zu
> basteln und komme nicht weiter. Habe vorher auch noch nichts mit html,
> css und php zu tun gehabt.
Nachdem ich nun Deine E-Mail komplett gelesen habe, frage ich mich,
warum es dann unbedingt so kompliziert sein muss? Aller Anfang ist
schwer. Und Du versuchst hier direkt zu Anfang schon etwas recht
kompliziertes.
> Ich habe die Daten meiner Bilder (alles jpgs) in eine mysql-Datenbank gepackt und
> möchte nun aus dieser meine Seite generieren. Dafür habe ich sie in ein
> array ausgelesen.
>
> Ich dachte mir, dazu die Funktion imagecreatetruecolor der GD-lib zu
> verwenden. Mit der Info auf
> "http://de2.php.net/manual/de/function.imagecreatetruecolor.php" komme
> ich allerdings nicht weiter.
> Wie rufe ich die Funktion aus html heraus auf? Wo wird der Pfad zum Bild
> übergeben?
Aus HTML gar nicht. Du kannst PHP-Funktionen nur aus/in PHP Code
aufrufen. Du hast einfach nicht richtig geguckt. imagecreatetruecolor
ist zum Erstellen eines blanken Bildes, ohne Herkunft aus anderen
binären Daten. Du müsstest imagecreatefromstring [1] oder
imagecreatefromjpeg [2] o.ä. verwenden für Deinen Zweck.
Ein Pfad zu einem Bild muss da gar nicht angegeben werden, da Du mit
einer mySQL Datenbank als Datenhaltung arbeiten möchtest und die
Bilddaten bei Dir somit in einem String vorliegen, nicht als
eigenständige Datei im Dateisystem des Servers.
> Da ich mit Templates arbeiten möchte, um das ganze übersichtlicher zu
> halten, wäre wahrscheinlich der Aufruf einer separaten Datei, z.B.
> showimage.php am einfachsten. Aber wie rufe ich die Funktion auf und wo
> übergebe ich die Parameter?
Der Aufruf in einer seperaten Datei ist sogar notwendig, da Bilder
eigenständige, binäre Resourcen sind und somit nicht im HTML-Quelltext
liegen können, wenn sie vom Browser erkannt und dargestellt werden sollen.
Als Parameter würde ich doch einfach nur die ID des Bildes in der mySQL
Datenbank übergeben. Dann liest Du die Binärdaten aus der Tabelle aus,
anhand der ID.
> Mache ich die DB-Abfrage dann ambesten auch in dieser showimage.php oder
> wie gestaltet man sowas am besten?
Nur dort macht diese wirklich Sinn, außer du verfolgst folgenden Ansatz:
Du liest alles für die Seite aus und hast dies innerhalb z.B. index.php
irgendwo in einem Array liegen.
Da nun Bilder wie oben geschrieben als eigenständige Resource von
Browsern angefragt werden, musst Du also diese getrennt von dem HTML
ausgeben. Wenn Du keine eigenständige image.php o.ä. haben möchtest
könntest Du temporäre Bilddateien auf die Platte schreiben.
Zum Beispiel sowas hier:
<html>.......<img src="345879aedf423deff321.jpg">
Dieses Bild ist aus der Datenbank geholt und nach Verarbeitung in deinem
PHP-Script von diesem temporär mit z.B. imagejpeg($image,
'345879aedf423deff321.jpg') [3] ausgegeben.
Wenn Du - was ich Dir in Deinem Fall empfehlen möchte - über ein
eigenständiges PHP-Script die Bilder ausliefern möchtest, musst Du in
jedem Fall darauf achten, die richtigen Header auszuliefern, bevor Deine
Binärdaten auf die Reise an den Browser geschickt werden.
Zumindest musst Du
header('Content-Type: image/jpeg');
bzw. diesen angepasst an den gesendeten Bilddatentyp (gif, ....) senden.
Am gesündesten ist es aber auch nocht den Browser mit Hilfe von weiteren
zu steuern (die etwa die Datengröße Content-Length: angeben u.a.)
[1] http://de2.php.net/manual/de/function.imagecreatefromstring.php
[2] http://de2.php.net/manual/de/function.imagecreatefromjpeg.php
[3] http://de2.php.net/manual/de/function.imagejpeg.php
--
Dennis Sterzenbach
php::bar PHP Wiki - Listenarchive