Thumbnails via ImageCreate()
Sebastian Freytag
- php
0 Robin0 Achim Janowski
Hallo Forum!
Kann das sein, dass ImageCreate() ein schlechtes Thumbnail liefert? Die jpeg-Qualität lässt doch arg zu wünschen übrig. Lässt sich diese manuell nach oben korrigieren, oder gibt es noch zusätze. (auf dem server läuft die aktuelle gd).
grüsse
Sebastian
hier mal der code:
$id=1;
$info = getimagesize($image);
$neueBreite = 180;
$neueHoehe=intval($info[1]*$neueBreite/$info[0]);
if ($info[2]=='1') { $grafik='gif'; }
if ($info[2]=='2') { $grafik='jpg'; }
@copy($image, "$id.$grafik");
$id++;
if ($neueBreite<$neueHoehe)
{ $neueHoehe = 180;
$neueBreite=intval($info[0]*$neueHoehe/$info[1]); }
if($info[2]==2) {
// JPG
$altesBild=ImageCreateFromJPEG("$image");
$neuesBild=ImageCreate($neueBreite,$neueHoehe);
ImageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$info[0],$info[1]);
ImageJPEG($neuesBild,"$id.$grafik");
}
Hallo Sebi! :)
Ohne mir den Code genauer anzuschauen:
Du mußt mal in deier phpinfo() nachschauen, welche GDlib auf deinem Server installiert ist - wenn die Version <=2 ist, ist nichts zu machen, weil die dann jedes JPG in 256 Farben umwandelt, weil sie nicht mit mehr rechnen kann, obwohl JPG das natürlich unterstützen würde...
Robin
*grummel* ich heiße nicht sebi! :)
also das sagt mir mein server (ein gemieteter, den ich leider nicht selber in dieser hinsicht administrieren kann). mich freut zumindest, dass das Gif-format unterstützt wird. was, wie ich schon lesen musste in neueren versionen nicht mehr unterstützt wird.
hier der phpinfo() auszug:
GD Support enabled
GD Version 1.6.2 or higher
FreeType Support enabled
FreeType Linkage with freetype
GIF Read Support enabled
GIF Create Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
Hallo "ich-heisse-nicht-Sebi"!
GD Version 1.6.2 or higher
Das "or higher" hab ich auch noch nie so richtig verstanden, aber das heisst, das die Version JPGs nur mit 256 Farben be-/umrechnen kann und darunter leidet die Quali immer ganz gewaltig.
Du solltest dir aber ohnehin überlegen, die Thumbnails nicht on the fly zu generieren, weil das bei größeren Gallerien zu wesentlich längeren Ladezeiten führen kann. Hab ich selbst mal ausprobiert... Jetzt generiere ich die Thumbs nur einmal und lege sie einfach in einem Ordner ab - in schlechter Quali, aber mit zügigen Ladezeiten.
Robin
Hallo!
ImageJPEG($neuesBild,"$id.$grafik");
Aus SelfPHP:
Möchten Sie einen Wert für den dritten Parameter (quality) übergeben, obwohl Sie das Bild nicht in eine Datei schreiben wollen, so können Sie als zweites Argument einen Leerstring übergeben.
Der Parameter quality legt den Komprimierungsgrad und damit die Qualität des Bildes fest. Je höher dieser Wert, desto besser wird das Bild (10 = starke Komprimierung, 100 = geringe Komprimierung).
also etwas in der Art: imagejpeg($neuesBild,"$id.$grafik",100);
Gruß, Achim