想必很多開(kāi)發(fā)者經(jīng)常會(huì)遇到需要壓縮圖片的需求,特別是在前端和用戶(hù)體驗(yàn)方面,更是需要長(zhǎng)期考慮。在php中,我們可以使用多種方法來(lái)進(jìn)行圖片的壓縮,例如使用第三方庫(kù)、直接讀取圖片數(shù)據(jù)等等。在本文中,我們主要討論幾種常見(jiàn)的php png圖片壓縮方案。
方法一:使用php自帶函數(shù)imagepng()
//打開(kāi)源圖片 $source_image = imagecreatefrompng('source.png'); //創(chuàng)建目標(biāo)圖片 $target_image = imagecreatetruecolor($target_width,$target_height); imagecopyresampled($target_image,$source_image,0,0,0,0,$target_width,$target_height,$w,$h); //壓縮并輸出圖片 imagepng($target_image,'compressed.png');
使用imagepng()函數(shù),將png圖片進(jìn)行重采樣來(lái)達(dá)到壓縮的目的。需要注意,這種方式并不能完全控制壓縮的質(zhì)量和大小,因此可能不適用于一些特殊場(chǎng)景。例如需要高清壓縮、透明背景的圖片等等,需要考慮其他方案。
方法二:使用第三方庫(kù)Tinify
//安裝tinify庫(kù) composer require tinify/tinify //引用庫(kù) use Tinify\Tinify; //申請(qǐng)key Tinify\setKey("YOUR_API_KEY"); //壓縮圖片 $source = Tinify\fromFile("source.png"); $source->toFile("compressed.png");
使用Tinify庫(kù)可以輕松快捷地實(shí)現(xiàn)png圖片壓縮,同時(shí)可以控制壓縮質(zhì)量和大小。需要申請(qǐng)一個(gè)API key,但是Tinify提供了一定量的免費(fèi)壓縮額度。此外,Tinify還支持多種編程語(yǔ)言,方便使用。
方法三:使用Gd庫(kù)
//打開(kāi)源圖片 $source_image = imagecreatefrompng('source.png'); //創(chuàng)建目標(biāo)圖片 $target_image = imagecreatetruecolor($target_width,$target_height); imagecopyresampled($target_image,$source_image,0,0,0,0,$target_width,$target_height,$w,$h); //壓縮并輸出png圖片 imagepng($target_image,'compressed.png',9,PNG_ALL_FILTERS);
使用Gd庫(kù)的imagepng()函數(shù)壓縮png圖片,和方法一類(lèi)似,但是此時(shí)可以用更多的選項(xiàng)來(lái)控制壓縮質(zhì)量和大小。例如指定壓縮數(shù)組、啟用壓縮過(guò)濾器等等。相對(duì)于方法一,這種方式可以更加控制壓縮質(zhì)量和大小,因此更加適用于復(fù)雜場(chǎng)景或者對(duì)壓縮效果有一定要求的場(chǎng)景。
總結(jié)
以上幾種方式都可以實(shí)現(xiàn)png圖片的壓縮,選擇哪種方式主要取決于具體場(chǎng)景和需求。