Bild verkleinern wird unscharf

Grunge

Erfahrenes Mitglied
Hallo Leute,

ich nutze folgende Funktion um Bilder zu verkleinern.

Code:
function make_thumbnail($image,$width,$out){
    $image=explode("/",$image);
$PicPathIn="usr_img_profile/"; 
$PicPathOut="usr_img_profile/".$out; 

// Orginalbild 
$bild=$image[1]; 

// Bilddaten ermitteln 
$size=getimagesize("$PicPathIn"."$bild"); 
$breite=$size[0]; 
$hoehe=$size[1]; 
$neueBreite=$width; 
$neueHoehe=intval($hoehe*$neueBreite/$breite); 

if($size[2]==1) { 
// GIF 
$altesBild=ImageCreateFromGIF("$PicPathIn"."$bild"); 
$neuesBild=imageCreate($neueBreite,$neueHoehe); 
imageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe);
imageGIF($neuesBild,"$PicPathOut"."$bild"); 
} 

if($size[2]==2) { 
// JPG 
$altesBild=ImageCreateFromJPEG("$PicPathIn"."$bild"); 
$neuesBild=imageCreate($neueBreite,$neueHoehe); 
imageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe);
ImageJPEG($neuesBild,"$PicPathOut"."$bild"); 
} 

if($size[2]==3) { 
// PNG 
$altesBild=ImageCreateFromPNG("$PicPathIn"."$bild"); 
$neuesBild=imageCreate($neueBreite,$neueHoehe); 
imageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe);
ImagePNG($neuesBild,"$PicPathOut"."$bild"); 
} 
}

das funktioniert auch wunderbar, jedoch sind die thumbnails sehr unscharf, und die Farbe is verfälscht.
Ich erstelle zwei Bilder einmal mit 50 px Breite und einmal mit 110px breite.

Der Aufruf erfolgt so:

Code:
make_thumbnail($_POST["img"], 50, "50/");
make_thumbnail($_POST["img"], 110, "110/");

habt ihr nen Lösungsvorschlag?
 
Hallo,

ich verweise dich an dieser Stelle gerne auf die offizielle Dokumentation von PHP (siehe Links unten). Dieser Dokumentation kannst du üblicherweise auch Empfehlungen zur Problembehebung entnehmen. In deinem Fall steht zu mindestens zwei der verwendeten Funktionen eine Empfehlung dabei.

http://php.net/imageCopyResized
http://php.net/imageCreate

Damit hier aber doch noch eine Lösung steht: Ersetze imageCopyResized durch imageCopyResampled und imageCreate durch imageCreateTrueColor. Das sollte deine Bilder deutlich besser aussehen lassen.

VG
Nino
 

Neue Beiträge

Zurück