我用一個簡單的縮略腳本,我寫了,它是非常標準:PHP:imagepng是創建異常大文件
$imgbuffer = imagecreatetruecolor($thumbwidth, $thumbheight);
switch($type) {
case 1: $image = imagecreatefromgif($img); break;
case 2: $image = imagecreatefromjpeg($img); break;
case 3: $image = imagecreatefrompng($img); break;
case 6: $image = imagecreatefrombmp($img); break;
case 15: $image = imagecreatefromwbmp($img); break;
default: return log_error("Tried to create thumbnail from $img: not a valid image");
}
imagecopyresampled($imgbuffer, $image, 0, 0, 0, 0, $thumbwidth, $thumbheight, $width, $height);
$output = imagepng($imgbuffer, "$album/thumbs/$imgname.png", 9);
9是最低質量設置,但是從一個400 x 600的JPEG圖像(在56kB)我得到了一個尺寸爲27 kB的縮略圖(140 x 140)。使用imagejpeg(質量80)而不是imagepng約4kB。
這怎麼可能,特別是在imagepng的最低質量設置?我嘗試使用imagecopy而不是imagecopyresampled,而使用imagecreate而不是真正的顏色版本。不幸的是,圖像出現了某種程度的損壞。
有什麼辦法可以獲得合理小文件大小的PNG縮略圖(140 x 140大約4 kB)?或者我必須使用JPEG?
我不確定兩者之間壓縮方案的確切區別是什麼,但它們明顯不同。如果你想保持透明度,我會說只使用PNG,否則爲什麼不使用JPEG?每個瀏覽器都支持它。在你的用例中JPEG有什麼問題? – Kris 2010-06-15 23:14:35
真的沒有問題想到它!當我第一次寫這個腳本時,出於某種原因使用了imagepng,我只是堅持下去。當我注意到尺寸問題時,我只是好奇這個問題是什麼。 – Rafael 2010-06-24 22:12:14