Tobias: Schlechte Qualität nach PHP imagecopyresampled

Hallo,

wenn ich mit PHP ein Bild verkleinere, sehe ich bei "weißen Flächen" so "graue Kästen". Die Qualität hatte ich bereits auf 100 gestellt, allerdings hat dies am Resultat nicht geändert.

Das Bild wird wie folgt erstellt


$newImg = imagecreatetruecolor($w_dst, $h_dst);
$white = imagecolorallocate($newImg, 255,255,255);
imagefill($newImg, 0, 0, $white);
imagecopyresampled($newImg, $im, $x_dst, $y_dst, 0, 0, $width_dst, $height_dst, $width, $height);
header('Content-Type: image/jpeg');
imagejpeg($newImg,null,"100");
  1. Mahlzeit,

    wenn ich mit PHP ein Bild verkleinere, sehe ich bei "weißen Flächen" so "graue Kästen".

    Ist das Original schon ein JPEG? Bedenke, dass JPEG generell verlustbehaftet komprimiert. Vermutlich ... nein, ganz sicher hat also das Originalbild, aus dem du kopierst, schon keine perfekt weißen Flächen.

    Allerdings frage ich mich auch, warum du das neu erzeugte Bild erst mit Weiß auffüllst. Soll das verkleinerte Bild nicht formatfüllend sein, und der beschriebene Effekt tritt bei den Weißflächen auf, die du vorher auffüllst?

    Die Qualität hatte ich bereits auf 100 gestellt, allerdings hat dies am Resultat nicht geändert.

    Kein Wunder. Ein unscharf fotografiertes Bild kann man auch nicht wesentlich verbessern.

    imagejpeg($newImg,null,"100");
    

    Was soll das denn? Der Parameter $quality ist als int deklariert, also ein Zahlenwert. Wieso übergibst du einen String?

    So long,
     Martin

    --
    Nothing travels faster than the speed of light with the possible exception of bad news, which obeys its own special laws.
    - Douglas Adams, The Hitchhiker's Guide To The Galaxy
    1. imagejpeg($newImg,null,"100");
      

      Was soll das denn? Der Parameter $quality ist als int deklariert, also ein Zahlenwert. Wieso übergibst du einen String?

      PHP (kurz für: scheißegal).