php程式開發中經常涉及到生成縮略圖,利用php生成縮略圖這個過程本身沒難度,但是你知道php能夠優化調節生成的縮略圖的品質嗎?也就是說php能夠控制生成縮略圖的清晰度以及生成後的縮略圖的體積。下面我們就來看看如何利用php優化我們壓縮後的圖檔。
對于如何使用php生成縮略圖這裡就不介紹了,大家可以參考本站下面這篇文章:
php生成圖檔縮略圖的方法
首先我們來看看用php壓縮圖檔的程式代碼:
檢視代碼
列印
1
<?php
2
header('Content-type: image/PNG');
3
$image=@imagecreatefrompng('http://www.phpernote.com/images/logo.png');
4
imagepng($image,'logo.png',0); //注意後面那個數字0,這裡即壓縮等級,參數範圍:0-9*/
5
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->image->setImageFormat('JPEG');
$this->image->setImageCompression(Imagick::COMPRESSION_JPEG);
$a = $this->image->getImageCompressionQuality() * 0.60;
if ($a == 0) {
$a = 60;
}
$this->image->setImageCompressionQuality($a);
$this->image->stripImage();
if ($this->type == 'gif') {
$this->image->writeImages ( $path, true );
} else {
$this->image->writeImage ( $path );
}
<br/>本文來自: 尚網 http://xue.uplook.cn/wzkf/php/1075369.html
本文轉自ljianbing51CTO部落格,原文連結: http://blog.51cto.com/ljianbing/1615494,如需轉載請自行聯系原作者