Bildzuschnitt macht Bild unscharf

Kalito

Erfahrenes Mitglied
Hallo,

ich habe eine geschrieben, die beim upload ein Bild erst runterskaliert, welches man danach mittels JS zuschneiden kann.

Der upload (gekürzt):
PHP:
move_uploaded_file($_FILES['img']['tmp_name'],"bilder/urbild/".$_SESSION['username'].".jpg");
        $file        = "bilder/urbild/".$_SESSION['username'].".jpg";
        $target      = "bilder/urbild/".$_SESSION['username'].".jpg";
        $max_width   = "120"; //Breite ändern
        $max_height   = "180"; //Höhe ändern
        $quality     = "100"; //Qualität ändern (max. 100)
        $src_img     = imagecreatefromjpeg($file);
        $picsize     = getimagesize($file);
        $src_width   = $picsize[0];
        $src_height  = $picsize[1];

$dst_img = imagecreatetruecolor($dest_width,$dest_height);
        imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $dest_width, $dest_height, $src_width, $src_height);
        imagejpeg($dst_img, $target, $quality);
        //nach dem upload weiterleitung zur upload.php
        header("Location: http://campusinform.de/Script/vz/foto-bearbeiten.html");
        exit();

Danach befindet sich das Bild in dem Ordner Urbild und ist nach wie vor, wie das Original, nur halt kleiner :)

Die Bildauswahl erfolgt mittels JS. Hier werden die Koordinaten der oberen linken Ecke ermittelt.

der Zuschnitt bei php hab ich so gelöst:
PHP:
//Bild-Quelle laden
        $file_name= 'bilder/urbild/'.$_SESSION['username'].'.jpg';
        list($w, $h, $type, $attr) = getimagesize($file_name);  //Bildwerte ermitteln
        $pic_im = imagecreatefromjpeg($file_name); //Bilddatei vom Original erzeugen
        $pic_x = (int)$_POST['x1'];   // Anfang x
        $pic_y = (int)$_POST['y1'];   // Anfang y
        $pic_w = 100; // weite
        $pic_h = 150; // höhe
        $dest_x = 0;   // Ziel x
        $dest_y = 0;   // Ziel y

        $dest_im = imagecreatetruecolor($pic_w, $pic_h);
        $white = imagecolorallocate($dest_im, 255, 255, 255);
        imagefill($dest_im, 0, 0, $white);
        imagecopy($dest_im, $pic_im, $dest_x, $dest_y, $pic_x, $pic_y, $pic_w, $pic_h); //Bild in neues Bild kopieren
        imagejpeg($dest_im, $_SESSION['username'].'.jpg'); //neues Bild einen Namen zuweisen
        rename($_SESSION['username'].'.jpg','bilder/'.$_SESSION['username'].'.jpg'); // Bild in bilder-ordner verschieben
        unlink($file_name); //Urbild löschen

Jetzt liegt aber das Problem darin, das das jetzige Bild im Vergleich zum "urbild" und zum skalierten Bild leicht unscharf und verschwommen ist.

Woran kann dies liegen und wie könnte ich das am besten lösen?

Gruß
 
Du kannst im zweiten Script imagejpeg() als dritten Parameter die Qualität des Bildresultats mit geben. Im ersten Script wurde das auch gemacht, im zweiten nicht.
 
Zurück