Tumbnailfunktion!?: Heiner

Hallo,
also ich habe mir die Thumbnail-Funktion von http://de.php.net/image genommen, die einer als Kommentar gepostet hat.

Nun ist es aber so, dass nur ca. 1/4 alle Thumbnails gut ausssehen, alle anderen haben entweder einen sehr starken Rotstich, sind komplett schwarz, sind nur schwarzweiss oder sind komplett rot.

Es muss also irgendwie an dieser Funktion liegen.

Die Funktion sieht so aus:

function resampimagejpg($forcedwidth, $forcedheight, $sourcefile, $destfile, $imgcomp)
   {
   $g_imgcomp=100-$imgcomp;
   $g_srcfile=$sourcefile;
   $g_dstfile=$destfile;
   $g_fw=$forcedwidth;
   $g_fh=$forcedheight;

if(file_exists($g_srcfile))
       {
       $g_is=getimagesize($g_srcfile);
       if(($g_is[0]-$g_fw)>=($g_is[1]-$g_fh))
           {
           $g_iw=$g_fw;
           $g_ih=($g_fw/$g_is[0])*$g_is[1];
           }
           else
           {
           $g_ih=$g_fh;
           $g_iw=($g_ih/$g_is[1])*$g_is[0];
           }
       $img_src=imagecreatefromjpeg($g_srcfile);
       $img_dst=imagecreate($g_iw,$g_ih);
       imagecopyresampled($img_dst, $img_src, 0, 0, 0, 0, $g_iw, $g_ih, $g_is[0], $g_is[1]);
       imagejpeg($img_dst, $g_dstfile, $g_imgcomp);
       imagedestroy($img_dst);
       return true;
       }
       else
       return false;
   }

Wenn ich sie nun so aufrufe:

resampimagejpg(150,150,"bild.gif","ausgabe.gif",50);

oder auch mit anderen Größen oder Qualitäten und/oder Bildgrößen sind sie, wie oben beschrieben fast alle schwarz, ahben nen Rotstich etc.

Nun meine Frage:
Kennt jmand eine andere Funktion oder Klasse, oder kan mir jemand sagen, was and obiger Funktion falsch ist?

Danke schonmal im Vorraus, Heiner.

  1. Hello,

    Ab GD2 gibt es TrueColor-Befehle.

    Die muss man dann auch benutzen, wenn man trueColor haben will. Sonst wird eine 256-Farben-Palette benutzt. Und in den ersten 256 Einträgen eines TrueColor-Bildes stehen dann eben nur ein paar Farben drin.

    http://de.php.net/manual/de/ref.image.php

    http://de.php.net/manual/de/function.imagecreatetruecolor.php

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
  2. Hi,

    kan mir jemand sagen, was and obiger Funktion falsch ist?

    wenn dein Provider eine GD-Lib ab 2 installiert hat (z.B. PureTec, nicht aber Clever-Servers, die erst zum Jahresende umstellen), dann funktioniert dies:

    imagecopyresampled($img_dst, $img_src, 0, 0, 0, 0, $g_iw, $g_ih, $g_is[0], $g_is[1]);

    Wenn dies aber funktioniert, dann sollte auch statt dem:

    $img_dst=imagecreate($g_iw,$g_ih);

    dies:

    $img_dst=imagecreatetruecolor($g_iw,$g_ih);

    verwendet werden, womit dein Problem gelöst wäre.

    imagedestroy($img_dst);

    Und der Korrektheit halber, kann man das Source-Image auch noch löschen. ;-)

    Gruß, Cybaer

    --
    Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!