天天看點

php商品圖檔壓縮

php程式開發中經常涉及到生成縮略圖,利用php生成縮略圖這個過程本身沒難度,但是你知道php能夠優化調節生成的縮略圖的品質嗎?也就是說php能夠控制生成縮略圖的清晰度以及生成後的縮略圖的體積。下面我們就來看看如何利用php優化我們壓縮後的圖檔。

對于如何使用php生成縮略圖這裡就不介紹了,大家可以參考本站下面這篇文章:

php生成圖檔縮略圖的方法

首先我們來看看用php壓縮圖檔的程式代碼:

檢視代碼

列印

<?php 

header('Content-type: image/PNG'); 

$image=@imagecreatefrompng('http://www.phpernote.com/images/logo.png'); 

imagepng($image,'logo.png',0); //注意後面那個數字0,這裡即壓縮等級,參數範圍:0-9*/ 

imagedestroy($image); 

以上 imagepng 函數的第三個參數即是本篇文章所要分析的,這個參數的意思是生成圖檔的品質等級。這裡可以分10個等級(0-9),0等級時即無壓縮,圖檔不會失真,圖檔最清晰,但圖檔的體積也最大,随着壓縮等級數字不斷增大,圖檔會變得越來越不清晰,但壓縮後圖檔的體積可以減少到原來的50%,壓縮比還是挺大的。

下面看一個具體的例子吧,現在一個原圖體積是125k,下面是經過不同壓縮等級後的測試結果:

imagepng($img,null,0); --> Size = 225K

 imagepng($img,null,1); --> Size = 85.9K

 imagepng($img,null,2); --> Size = 83.7K

 imagepng($img,null,3); --> Size = 80.9K

 imagepng($img,null,4); --> Size = 74.6K

 imagepng($img,null,5); --> Size = 73.8K

 imagepng($img,null,6); --> Size = 73K

 imagepng($img,null,7); --> Size = 72.4K

 imagepng($img,null,8); --> Size = 71K

 imagepng($img,null,9); --> Size = 70.6K

注意以上當壓縮等級為0的時候,體積比原圖還大的原因是原始圖檔其實是經過了輕微的壓縮,而0等級的壓縮就是一點壓縮都沒有,是以它的體積會大于原始圖檔。

根據以上結論和實際測試結果,作者得出的結論是在優化圖檔的時候,一般采用2等級比較合适,圖檔沒有失真,但體積減少了30%,達到優化的目的了。如果采用6、7、8、9等級壓縮的話,圖檔有所失真,而體積減少卻不明顯。是以不宜采用這些等級進行壓縮優化圖檔。

本文轉載自:

<a href="http://www.phpernote.com/php-function/784.html" target="_blank">http://www.phpernote.com/php-function/784.html</a>

-----------------------------

儲存時壓縮處理

代碼如下:

// 儲存到指定路徑

 public function save_to($path) {

  //壓縮圖檔品質

  $this-&gt;image-&gt;setImageFormat('JPEG');

  $this-&gt;image-&gt;setImageCompression(Imagick::COMPRESSION_JPEG);

  $a = $this-&gt;image-&gt;getImageCompressionQuality() * 0.60;

  if ($a == 0) {

   $a = 60;

  }

  $this-&gt;image-&gt;setImageCompressionQuality($a);

  $this-&gt;image-&gt;stripImage();

  if ($this-&gt;type == 'gif') {

   $this-&gt;image-&gt;writeImages ( $path, true );

  } else {

   $this-&gt;image-&gt;writeImage ( $path );

 }

&lt;br/&gt;本文來自: 尚網 http://xue.uplook.cn/wzkf/php/1075369.html

本文轉自ljianbing51CTO部落格,原文連結: http://blog.51cto.com/ljianbing/1615494,如需轉載請自行聯系原作者