【发布时间】:2011-03-04 05:53:20
【问题描述】:
我正在使用我编写的一个简单的缩略图脚本,它非常标准:
$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)我得到的缩略图大小为 27kB (140 x 140)。使用 imagejpeg(质量为 80)而不是 imagepng 大约 4kB。
这怎么可能,尤其是在 imagepng 的最低质量设置下?我尝试使用 imagecopy 而不是 imagecopyresampled,并使用 imagecreate 而不是真彩色版本。不幸的是,图像以某种方式被破坏了。
有没有什么方法可以获得文件大小相当小的 PNG 缩略图(在 140 x 140 时大约 4 kB)?还是我必须使用 JPEG?
【问题讨论】:
-
我不确定两者之间压缩方案的确切区别是什么,但它们显然不同。我会说,如果你想保持透明度,只使用 PNG,否则为什么不使用 JPEG?每个浏览器都支持它。在您的用例中,JPEG 有什么问题?
-
没问题真的想起来了!当我第一次编写脚本时,出于某种原因,我使用了 imagepng,我只是坚持使用它。当我注意到尺寸问题时,我只是好奇是什么问题。
标签: php image png thumbnails jpeg