2012-03-28 7 views
0

ich habe diesen Code für die Herstellung proportional Miniaturbild:Bildqualität während Thumbnail machen

function CroppedThumbnail($imgSrc,$thumbnail_width,$thumbnail_height) { //$imgSrc is a FILE - Returns an image resource. 
//getting the image dimensions 
list($width_orig, $height_orig) = getimagesize($imgSrc); 

if (strtolower(substr($imgSrc, -3)) == "jpg") { 
    $myImage = imagecreatefromjpeg($imgSrc); 
} else if (strtolower(substr($imgSrc, -3)) == "jpeg") { 
    $myImage = imagecreatefromjpeg($imgSrc); 
} else if (strtolower(substr($imgSrc, -3)) == "png") { 

    $myImage = imagecreatefrompng($imgSrc); 
} else if (strtolower(substr($imgSrc, -3)) == "gif") { 
    $myImage = imagecreatefromgif($imgSrc); 
} 


$ratio_orig = $width_orig/$height_orig; 

if ($thumbnail_width/$thumbnail_height > $ratio_orig) { 
    $new_height = $thumbnail_width/$ratio_orig; 
    $new_width = $thumbnail_width; 
} else { 
    $new_width = $thumbnail_height*$ratio_orig; 
    $new_height = $thumbnail_height; 
} 

$x_mid = $new_width/2; //horizontal middle 
$y_mid = $new_height/2; //vertical middle 

$process = imagecreatetruecolor(round($new_width), round($new_height)); 

imagecopyresampled($process, $myImage, 0, 0, 0, 0, $new_width, $new_height, $width_orig, $height_orig); 
$thumb = imagecreatetruecolor($thumbnail_width, $thumbnail_height); 
imagecopyresampled($thumb, $process, 0, 0, ($x_mid-($thumbnail_width/2)), ($y_mid-($thumbnail_height/2)), $thumbnail_width, $thumbnail_height, $thumbnail_width, $thumbnail_height); 

imagedestroy($process); 
imagedestroy($myImage); 
return $thumb; 

}

funktioniert gut

aber die Qualität des Bildes ist ein wenig niedrig

was sollte ich für die Erhöhung der erzeugten Bildqualität tun

+0

Ich bin mir nicht sicher, was "ein bisschen tief" bedeutet, aber auf einer anderen Notiz könnten Sie den Fehler hier beheben: 'else if (strtolower (substr ($ imgSrc, -3)) ==" jpeg ")' – Jon

+0

substr ($ imgSrc, -4)? –

Antwort

1

Haben Sie festgelegt Bildqualität beim Speichern des Ergebnisses dieser Funktion?

Mit dieser Funktion können Sie z. B. die JPEG-Komprimierung einstellen, und die Standardeinstellung ist ziemlich niedrig.

http://www.php.net/manual/en/function.imagejpeg.php

Ist dies nicht der Fall ist, könnte ich Dumping vorschlagen PHP GD zusammen. Es ist wirklich nicht die beste Bibliothek für die Bildbearbeitung, nur standardmäßig verfügbar. ImageMagick ist großartig, aber Sie müssen es installieren. Die Arbeit mit mir gab mir Thumbnails, die kleiner in der Dateigröße, aber besser in der Qualität waren als PHP GD.

http://www.php.net/manual/en/book.imagick.php

0

Wenn Sie eine bikubische Interpolation während Resize möchten, sollten ImageMagick statt GD verwenden, weil seine sehr CPU-intensiv. Zum Beispiel ist hier a post in russian (aber Sie können sehen, wie komplex Code ist)

0

Sie können die Gif-Qualität nicht ändern, aber wenn Sie andere Bildformate verwenden, dann stellen Sie die Qualität auf 100. Zum Beispiel: imagepng ($ imageResource, NULL, 100);

Verwandte Themen