我用一个简单的缩略脚本,我写了,它是非常标准: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