2011-08-30 119 views
0

如何縮小Linux中的圖像大小。我爲此使用了ImageMagick。但對於gif圖像來說效果不佳。我已經用它爲:如何調整圖像大小

要調整圖像

exec("convert $original -resize " . $width . 'x' . $height . ' ' . $destination); 

要縮小圖像尺寸

exec("convert $original -quality 80% $new_img"); 

請讓我知道,如果你有什麼辦法來縮小圖像尺寸。此代碼適用於jpg,但不適用於gif圖像。

感謝您的幫助。

+1

你究竟是什麼意思與「不好」?你的意思是說質量的損失太大了? – fvu

+0

定義:「運作良好」。你會得到錯誤,或者你有一個奇怪的圖像? Gif圖像已經索引了顏色表,並且不能像你期望的那樣調整大小。 – Quamis

+0

此外,還有一個可以直接從php使用Imagemagick的擴展,http://www.php.net/manual/en/intro.imagick。PHP,這應該比執行外部程序要好得多...... – fvu

回答

1

the Imagemagick manual:

-quality value 
JPEG/MIFF/PNG compression level. 

這意味着,使用的質量水平將在上述圖像類型只工作,不包括報價GIF。

對於GIF,最簡單的選擇是使用-colors命令來減少圖像中使用的顏色數量。結果的質量很大程度上取決於您的初始圖像包含的內容,我已經看到了從256色減少到16色並不會導致明顯質量損失的情況,以及其他減少到128色會使圖像無法使用的情況。你必須嘗試。

最後一句話:您可以將GIF轉換爲PNG格式,並在生成的圖像上使用-quality命令。然而對PNG的質量是有點不恰當的:

對於MNG和PNG圖像格式,質量值設置zlib壓縮 電平(質量/ 10)和過濾器型(質量%10)。默認PNG「質量」 爲75,這意味着壓縮級別7與自適應PNG濾波,除非 圖像具有彩色圖,在這種情況下,它表示壓縮級別7,沒有PNG 過濾。

所以,如果PNG的尺寸減小小於JPG,那麼不要感到驚訝,它只會改善無損PNG圖像的壓縮。

0

要減小尺寸的GIF圖像,可以嘗試將它們轉換爲PNG或減少顏色深度。顏色深度是圖像中使用的顏色數量。較少的顏色意味着較小的圖像尺寸。

0

所以,你可以使用GD http://ua.php.net/manual/en/function.imagecopyresampled.php <

?php 
// The file 
$filename = 'test.jpg'; 

// Set a maximum height and width 
$width = 200; 
$height = 200; 

// Content type 
header('Content-Type: image/jpeg'); 

// Get new dimensions 
list($width_orig, $height_orig) = getimagesize($filename); 

$ratio_orig = $width_orig/$height_orig; 

if ($width/$height > $ratio_orig) { 
    $width = $height*$ratio_orig; 
} else { 
    $height = $width/$ratio_orig; 
} 

// Resample 
$image_p = imagecreatetruecolor($width, $height); 
$image = imagecreatefromjpeg($filename); 
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig); 

// Output 
imagejpeg($image_p, null, 100); 
?> 
0

以下JPEG圖片效果良好,可能適用於其他圖像格式。給定的密​​度(300)非常高,適合保持文本可讀性,因此請根據您的情況進行調整。

convert input-file -density 300 -quality 50% output-file