Sebastian Freytag: Thumbnails via ImageCreate()

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");
   }

  1. 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

    1. *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

      1. 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

  2. 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