bastiii: Bild verkleinern und abspeichern. Schlechte Quali.

Hey.

Ich habe ein Formular zum bilder hochladen.
Ein Skript soll es verkleinern und abspeichern.
Es klappt, aber es sieht beschissen aus.. völlig verpixelt und ungenau.

Was mache ich falsch?

if(ob_get_level()===0){ob_start();}  
		$PicPathOut="./userpics/".$_SESSION['auth_userid']."/profil/";  
		$bild=md5(uniqid(rand(),true));  
		// Bilddaten feststellen  
		$size=getimagesize($_FILES["newpic"]['tmp_name']);  
		$breite=$size[0];  
		$hoehe=$size[1];  
		$neueHoehe=intval($hoehe*170/$breite);  
		if($size[2]==2) {  
			// JPG  
			$altesBild=ImageCreateFromJPEG($_FILES["newpic"]['tmp_name']);  
			$neuesBild=ImageCreate(170,$neueHoehe);  
			ImageCopyResized($neuesBild,$altesBild,0,0,0,0,170,$neueHoehe,$breite,$hoehe);  
			ImageJPEG($neuesBild,$PicPathOut.md5(uniqid(rand(),true)).".jpg");  
		}else{  
			if($size[2]==1) {  
			// GIF  
			$altesBild=ImageCreateFromGIF($_FILES["newpic"]['tmp_name']);  
			$neuesBild=ImageCreate(170,$neueHoehe);  
			ImageCopyResized($neuesBild,$altesBild,0,0,0,0,170,$neueHoehe,$breite,$hoehe);  
			ImageGIF($neuesBild,$PicPathOut.md5(uniqid(rand(),true)).".gif");  
			}  
			if($size[2]==3) {  
			// PNG  
			$altesBild=ImageCreateFromPNG($_FILES["newpic"]['tmp_name']);  
			$neuesBild=ImageCreate(170,$neueHoehe);  
			ImageCopyResized($neuesBild,$altesBild,0,0,0,0,170,$neueHoehe,$breite,$hoehe);  
			ImagePNG($neuesBild,$PicPathOut.md5(uniqid(rand(),true)).".png");  
			}  
		}

mfg

basti

  1. Hello,

    Ich habe ein Formular zum bilder hochladen.
    Ein Skript soll es verkleinern und abspeichern.
    Es klappt, aber es sieht beschissen aus.. völlig verpixelt und ungenau.

    Was mache ich falsch?

      	$neuesBild=ImageCreate(170,$neueHoehe);  
    

    benutze ImageCreateTrueColor() stattdessen.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Hi.

      benutze ImageCreateTrueColor() stattdessen.

      Danke. schon besser, aber immer noch nicht gut =(

      1. Hello,

        benutze ImageCreateTrueColor() stattdessen.

        Danke. schon besser, aber immer noch nicht gut =(

        Kannst Du mal ein Muster (Original und resized) verlinken?

        Alternativ könntest es Du noch mit
        http://de.php.net/manual/en/function.imagecopyresampled.php

        versuchen, zu kopieren.

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. Hello,

          Alternativ könntest es Du noch mit
          http://de.php.net/manual/en/function.imagecopyresampled.php

          versuchen, zu kopieren.

          und den Quality-Parameter in ImageJpeg() auf 100(%) stellen
          http://de.php.net/manual/en/function.imagejpeg.php

          Liebe Grüße aus dem schönen Oberharz

          Tom vom Berg

          --
          Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de