Schlechte Qualität bei Thumbnails

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Schlechte Qualität bei Thumbnails

    Hy!

    Ich verwende php, um jpegs upzuloaden und dann daraus thumbnails zu generieren. Leider haben die thumbnails eine katastrophale Qualität (s. attached jpg).

    Bitte um Hilfe - danke!

    Code:
    ...
    function ResizeImageUsingGD($origimage, $newimage, $newwidth, $newheight) {
    $size = GetImageSize($origimage);
    $width = $size[0];
    $height = $size[1];
    if ($im = ImageCreateFromJPEG($origimage)) {
    if ($newheight && ($width < $height)) {
    $newwidth = ($newheight / $height) * $width;
    } else {
    $newheight = ($newwidth / $width) * $height;
    }
    $im2 = ImageCreateTrueColor($newwidth,$newheight);
    ImageCopyResampled($im2,$im,0,0,0,0,$newwidth,$newheight,$width,$height);
    if (ImageJpeg($im2, $newimage, $imagequality)) {
    return true;
    }
    }
    return false;
    }

    $ok = 0;
    if ($action == "insertNew") {
    $uploadfile = $uploaddir . basename($_FILES['image']['name']);
    if (move_uploaded_file($_FILES['image']['tmp_name'], $uploadfile)) {
    $rs = @mysql_query("SELECT max(id)+1 as id FROM ".$table."");
    if ($rs) while ($line = @mysql_fetch_array($rs)) {
    $maxid = $line["id"];
    }
    $origimage = $uploaddirpics.$maxid.".jpg";
    copy($uploaddir.$file_name, $origimage);
    unlink($uploaddir.$file_name);
    $thumbimage = $uploaddirpics."thumbs/".$maxid.".jpg";
    $thumb_exists = file_exists($thumbimage);
    if (!$thumb_exists) {
    ResizeImageUsingGD($origimage, $thumbimage, $reswidth, $resheight);
    }
    echo "Das Bild wurde erfolgreich auf den Server geladen.\n";
    } else {
    echo "Probleme beim Upload!\n";
    }
    ...

    PHP Version 4.3.2

    gd-Info:

    GD Support enabled
    GD Version bundled (2.0.12 compatible)
    GIF Read Support enabled
    JPG Support enabled
    PNG Support enabled
    WBMP Support enabled
    XBM Support enabled

  • #2
    bitte php-tags nutzen. und nicht alles posten, sondern nur relevante stellen.

    woher kommt $imagequality?

    Kommentar


    • #3
      woher kommt $imagequality?
      aus einer config.php, die included ist. aktueller wert = 95, aber ich hab schon alles mögliche versucht.

      Kommentar


      • #4
        hm, kann ich irgendwie nicht glauben.
        mach mal das E_ALL an.

        Kommentar


        • #5
          Du mußt in deiner Funktion noch angeben, dass $imagequality global ist.
          Also:

          function ResizeImageUsingGD($origimage, $newimage, $newwidth, $newheight) {
          global $imagequality;

          ...
          }

          Gruß
          Stephan
          [font=Verdana]SteGaSoft
          Theorie ist, wenn jeder weiß, wie es geht, aber nichts funktioniert, Praxis ist, wenn alles funktioniert und niemand weiß warum.
          [/font]

          Kommentar


          • #6
            Original geschrieben von sgt
            Du mußt in deiner Funktion noch angeben, dass $imagequality global ist.
            Also:

            function ResizeImageUsingGD($origimage, $newimage, $newwidth, $newheight) {
            global $imagequality;

            ...
            }
            ich würde einen Parameter empfehlen...globale Variablen sind böse

            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
            Wie man Fragen richtig stellt

            Kommentar


            • #7
              Danke für die Hilfe!
              Jetzt geht's!

              Kommentar


              • #8
                ich würde einen Parameter empfehlen...globale Variablen sind böse
                Ja gut, aber wenn er schon die Variable zentral definiert ...

                Gruß
                Stephan
                [font=Verdana]SteGaSoft
                Theorie ist, wenn jeder weiß, wie es geht, aber nichts funktioniert, Praxis ist, wenn alles funktioniert und niemand weiß warum.
                [/font]

                Kommentar


                • #9
                  Original geschrieben von ghostgambler
                  ich würde einen Parameter empfehlen...globale Variablen sind böse
                  warum das?

                  Kommentar


                  • #10
                    aus rücksicht auf resourcen sollte man den gültigkeitsbereich der variablen nicht unnötig groß machen. andererseits wird dieser hier nicht verändert, denn die variable wird so oder so in einer einstellungs-include-datei wahrscheinlich ganz am anfang des dokumentes definiert.

                    dass es mit einem parameter viel übersichtlicher aussieht, ist jedoch auch kein unwichtiger aspekt. aus eigener erfahrung kann ich noch hinzufügen, dass es z.t. sehr schwer ist, fremden code zu pflegen, der viel mit globalen variablen arbeitet.

                    Kommentar


                    • #11
                      Original geschrieben von penizillin
                      aus rücksicht auf resourcen sollte man den gültigkeitsbereich der variablen nicht unnötig groß machen. andererseits wird dieser hier nicht verändert, denn die variable wird so oder so in einer einstellungs-include-datei wahrscheinlich ganz am anfang des dokumentes definiert.

                      dass es mit einem parameter viel übersichtlicher aussieht, ist jedoch auch kein unwichtiger aspekt. aus eigener erfahrung kann ich noch hinzufügen, dass es z.t. sehr schwer ist, fremden code zu pflegen, der viel mit globalen variablen arbeitet.
                      exakt, vor allem das letzte sollte man nicht außer acht lassen

                      Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                      bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                      Wie man Fragen richtig stellt

                      Kommentar

                      Lädt...
                      X