Archiv verlassen und diese Seite im Standarddesign anzeigen : thumbnails on-the-fly
fabian ackle
23.05.2002, 21:01
Tach zusammen
gibt es in php eine EINFACHE möglichkeit thumbnails on-the-fly zu erzeugen?
thx
dubious
die frage ist, was du unter einfach und was unter on-the-fly verstehst.
es gibt grafikfunktionen in php, die sind imho ned all zu schwer zu implementieren.
willst das beim hochladen der bilder oder bei jedem anzeigen?
letzteres wäre wohl etwas rechenintensiv für den server.
fabian ackle
23.05.2002, 21:33
also eigentlich wollte ich eine art bildergalerie machen. damit ich nicht zu jedem bild noch ein thumbnail machen muss hätte ich diese gerne bei jedem zugriff kurz generieren lassen. Wenn ich mir das aber nochmals überlege wäre es auch möglich das thumbnail nur einmal (beim fileupload) zu generieren, würde den server vieleicht ein bisschen entlasten :)
ich habe bei google schon einen source gefunden, dieser war allerdings 18kb gross, darum frage ich ob es auch eine EINFACHE methode gibt ;)
greetz
dubious
zuerst per imagecreatefromjpeg() das originalbild laden.
dann n neues bild mittels imagecreate() erstellen.
dann das original verkleinert in das neue kopieren mit imagecopyresized().
zuletzt das bild durch imagejpeg() speichern oder an den browser senden.
falls es kein jpg ist, das ganze halt mit gif oder png funktionen.
imagecreatefromjpeg() (http://www.php.net/manual/de/function.imagecreatefromjpeg.php)
imagecreate() (http://www.php.net/manual/de/function.imagecreate.php)
imagecopyresized() (http://www.php.net/manual/de/function.imagecopyresized.php)
imagejpeg() (http://www.php.net/manual/de/function.imagejpeg.php)
fabian ackle
24.05.2002, 20:42
Also, folgendes habe ich bis jetzt, aber irgend etwas scheint noch falsch zu sein:
$dst=@ImageCreate(240,320);
$src=@ImageCreateFromGif("test.jpg");
ImageCopyResized($dst_img,$src_img,0,0,0,0,240,320,ImageSX($src),ImageSY($src));
ImageJPEG("gugus.jpg");
es bringt zwar keine fehler, aber leider auch kein resultat :rolleyes:
kann mir jemand einen kleinen tip geben? :)
greetz
dubious
Felix Kaiser
24.05.2002, 20:49
Hast du den Content Type im Header gesetzt?
Header("Content-Type: image/jpeg");
Ansonsten dürfte auch kein Image kommen.
fabian ackle
24.05.2002, 20:58
Hatte ich auch schon drin, aber habs dann aus folgendem grund wieder entfernt:
Warning: Cannot add header information - headers already sent by (output started at /home3/dubi/public_html/php/test.php:4) in /home3/dubi/public_html/php/test.php on line 10
greetz
dubious
Felix Kaiser
24.05.2002, 21:09
Logisch, du musst den Header setzen bevor du die ersten Daten an den Browser schickst, sonst passiert das. Und ohne den Content-Type zu ändern wird im Browser nix passieren, eventuell Zeichensalat wird sich dir offenbaren. Der Header sorgt dafür, dass der Browser weiß, dass es ein Bild ist, also im Fall eines Bildes keinesfalls Nicht-Bild-Daten senden ...
fabian ackle
24.05.2002, 22:26
klar, eigentlich logisch :)
<?
header("Content-type: image/jpeg");
$dst_img=@ImageCreate(240,320);
$src_img=@ImageCreateFromJPEG("test.jpg");
ImageCopyResized($dst_img,$src_img,0,0,0,0,240,320,ImageSX($src_img),ImageSY($src_img));
ImageJPEG($dst_img);
?>
ok, das geht schon besser, allerdings bekomme ich das bild immer noch nicht angezeigt [nur das schöne rote kreuzchenhttp://asdf.jpg.] ;)
dubious
aus http://de.php.net/manual/de/function.imagejpeg.php:
int imagejpeg ( int im [, string filename [, int quality]])
wo hast da den pointer im? (in deinem fall $dst)
ausserdem: du definierst $dst und $src und verwendest nachher $dst_img und $src_img?
guru:
mit imagejpeg('filename') spoeichert man ein bild und sendet es ned an den browser, also nix content type.
ok, unsere postings hamn sich überschnitten :rolleyes:
lass halt mal die @ weg, damit du fehlermeldungen kriegst...
fabian ackle
24.05.2002, 22:47
ausserdem: du definierst $dst und $src und verwendest nachher $dst_img und $src_img? thx, hab ich doch glatt übersehen...
ohne die @:
Fatal error: Call to undefined function: imagecreate() in /home3/dubi/public_html/php/test.php on line 3
habs danach auf einen anderen server geladen, dort hat es funktioniert *grr...*
danke für eure hilfe
kann man das bild auch noch farbig ertellen? ;)
die bilder werden extrem dunkel und man erkennt kaum
etwas, und das bei bester qualität...
greetz
dubious
btw. ohne gd-library funktioniet das auch ned ;)
so long
cYrus
ImageGammaCorrect() (http://de.php.net/ImageGammaCorrect) dürfte helfen.
türlich zwischen ImageCopyResized() und ImageJPEG()
fabian ackle
25.05.2002, 16:21
ok, mit der gammakorrektur wird sas bild heller, aber die qualität bleibt extrem mies (zu bewundern hier (http://mitglied.lycos.de/dubious84/mom/test.php))
woran könnte das liegen? :(
greetz
dubious
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.