2014-10-26 146 views
-1

我使用下面的代碼,以使圖像的縮略圖,但質量達不到mark.Need幫助製作使用PHP圖像的縮略圖,而不會降低其質量

<?php 
    function make_thumb($src,$dest,$desired_width) 

    { 
    $source_image=imagecreatefromjpeg($src); 
    $width = imagesx($source_image);//width of the image. 
    $height = imagesy($source_image);//height of the image. 
    $desired_height = floor($height*($desired_width/$width)); 
    $virtual_image = imagecreatetruecolor($desired_width,$desired_height); 

imagecopyresized($virtual_image,$source_image,0,0,0,0,$desired_width,$desired_height,$width,$height); 
    $fname= basename($src); 
    $dir="upload/thumbs/"; 
    imagejpeg($virtual_image,$dir.$fname); 

    } 
    ?> 

縮略圖的大小合適的但不合適的質量。

回答

0

有幾件事你可以做,比如讓圖像的大小稍大一點(過採樣),並且強制它在輸出時按照樣式或者你有什麼要求,但是你的問題可能是你的壓縮不是設置在你的imagejpeg()

// This function has a quality setting (3rd value ranges from 0-100) 
imagejpeg($virtual_image,$dir.$fname,100); 
+0

您的解決方案工作謝謝你,但想知道什麼是默認的質量值? – Bhuwan 2014-10-26 17:58:39

+0

添加100質量不會增加縮小質量,但會增加文件大小。 – AlexL 2014-10-26 17:58:44

+0

根據PHP手冊,默認質量是75,但我發現它太笨重 – Rasclatt 2014-10-26 17:59:56

0

你應該重新採樣圖像,而不是簡單地調整大小。

使用imagecopyresampled()這樣的:

imagecopyresampled($virtual_image,$source_image,0,0,0,0,$desired_width,$desired_height,$width,$height); 
+0

結合imagecopyresampled()和質量:100給出最好的結果。 – Bhuwan 2014-10-26 18:07:19

+0

,但使用100質量時,文件大小從9 kb增加到45 kb。 – Bhuwan 2014-10-26 18:11:31

+0

正如對Rasclatt的回答評論的那樣,100 q是矯枉過正的,並且實際上刪除了由JPEG完成的任何壓縮。隨着resample和80-90之間的質量你應該沒問題 – AlexL 2014-10-26 18:13:51

相關問題