gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 16:01:46 25 4
gpt4 key购买 nike

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

$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 文件转换为 PNG,则 PNG 还必须逐个像素地重现由 JPEG 有损压缩引起的压缩伪影。

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

关于PHP:imagepng 正在创建非常大的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3049724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com