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