繁体   English   中英

PHP:imagepng正在创建非常大的文件

[英]PHP: imagepng is creating inordinately large files

我正在使用我编写的简单缩略图脚本,它非常标准:

$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缩略图(大约4 kB,140 x 140)? 或者我必须使用JPEG?

PNG是一种无损格式,对于通常在JPEG文件中压缩的照片和其他复杂图像,不会产生良好的压缩比。

更糟糕的是,如果您要将JPEG文件转换为PNG,PNG还必须逐像素地重现由JPEG有损压缩引起的压缩伪像。

仅将PNG用于计算机图形和其他高度可压缩的图像,或者当您绝对不能丢失任何数据时(或者,正如Kris正确指出的那样,当您需要Alpha通道时)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM