簡體   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