PHP的一個(gè)完美GIF等比縮放類(lèi),附帶去除縮放黑背景
現(xiàn)在寫(xiě)東西都喜歡封裝成類(lèi).....大家調(diào)用一下就行了..我就不說(shuō)怎么調(diào)用了
class resize_image{
private $o_img_width;//原圖像寬度
private $o_img_height;//原圖像高度
private $n_img_width;//新圖像寬度
private $n_img_height;//新圖像高度
private $o_img_file;//原圖像文件
private $o_img_source;//原圖像資源
private $n_img_file;//新圖像資源
private $n_img_source;//新圖像資源
private $o_to_n_per=0.5;//圖像縮放比
//初始化內(nèi)部變量
function __construct($oldfile,$newfile){
list($width,$height)=getimagesize($oldfile);
$this->o_img_file=$oldfile;
$this->o_img_width=$width;
$this->o_img_height=$height;
$this->n_img_file=$newfile;
}
//等比例縮放并且解決GIF透明色為黑色背景的問(wèn)題
function get_resize_scaling_img(){
$this->n_img_width=$this->o_img_width*$this->o_to_n_per;
$this->n_img_height=$this->o_img_height*$this->o_to_n_per;
//等比例縮放圖片(算法)
if ( $this->n_img_width && ( $this->o_img_width <$this->o_img_height))
{
$this->n_img_width = ( $this->n_img_height/$this->o_img_height) * $this->o_img_width;
}
else
{
$this->n_img_height = ($this->n_img_width / $this->o_img_width) * $this->o_img_height;
}
$this->o_img_source=imagecreatefromgif($this->o_img_file);
//創(chuàng)建一個(gè)等比例縮放大小的畫(huà)布
$this->n_img_source=imagecreatetruecolor($this->o_img_width,$this->n_img_height);
//美化:去除黑色不透明背景
$trans_init=imagecolortransparent($this->o_img_source);
//尋找透明色并且判斷是否在總顏色中
if($trans_init>=0 && $trans_init < imagecolorstotal($this->o_img_source)){
//如果在的話則搜索這個(gè)顏色的RGB色相
$trans_index=imagecolorsforindex($this->o_img_source,$trans_init);
//找到之后就創(chuàng)建這樣一個(gè)顏色
$trans_new=imagecolorallocate($this->n_img_source,$trans_index["red"],$trans_index["green"],$trans_index["blue"]);
//然后我們用這個(gè)顏色去填充新的圖像
imagefill($this->n_img_source,0,0,$trans_new);
//然后我們?cè)诎烟畛渖O(shè)置為透明
imagecolortransparent($this->n_img_source,$trans_new);
}
//拷貝原圖像到新畫(huà)板上
imagecopyresized($this->n_img_source,$this->o_img_source,0,0,0,0,$this->n_img_width,$this->n_img_height,$this->o_img_width,$this->o_img_height);
return $this->n_img_source;
}
//最終銷(xiāo)毀資源
function __destruct(){
imagedestroy($this->o_img_source);
imagedestroy($this->n_img_source);
}
}
說(shuō)明:因?yàn)橄惹皼](méi)想那么多所以聲明了很多私有的內(nèi)部變量以便調(diào)用...程序看起來(lái)很笨拙啊......
- PHP使用GIFEncoder類(lèi)處理gif圖片實(shí)例
- PHP生成Gif圖片驗(yàn)證碼
- php調(diào)整gif動(dòng)畫(huà)圖片尺寸示例代碼分享
- PHP之生成GIF動(dòng)畫(huà)的實(shí)現(xiàn)方法
- 完美實(shí)現(xiàn)GIF動(dòng)畫(huà)縮略圖的php代碼
- PHP使用GIFEncoder類(lèi)生成gif動(dòng)態(tài)滾動(dòng)字幕
- PHP使用GIFEncoder類(lèi)生成的GIF動(dòng)態(tài)圖片驗(yàn)證碼
- PHP基于GD庫(kù)的縮略圖生成代碼(支持jpg,gif,png格式)
- PHP支持多種格式圖片上傳(支持jpg、png、gif)
- php判斷GIF圖片是否為動(dòng)畫(huà)的方法
相關(guān)文章
laravel實(shí)現(xiàn)于語(yǔ)言包的完美切換方法
今天小編就為大家分享一篇laravel實(shí)現(xiàn)于語(yǔ)言包的完美切換方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09一個(gè)比較簡(jiǎn)單的PHP 分頁(yè)分組類(lèi)
最近寫(xiě)的一個(gè)PHP 分頁(yè)分組類(lèi),寫(xiě)完后才看到,網(wǎng)上有太多的了,但是這個(gè)比較簡(jiǎn)單,記到此處,備用,對(duì)于學(xué)習(xí)php的朋友也是一個(gè)不錯(cuò)的參考。2009-12-12PHP實(shí)現(xiàn)上傳圖片到 zimg 服務(wù)器
zimg是一個(gè)具有圖片處理功能的圖片存儲(chǔ)服務(wù),你可以上傳圖片到zimg服務(wù)器,然后通過(guò)帶有參數(shù)的URL來(lái)獲取被處理過(guò)的圖片,今天我們的主要內(nèi)容是使用php實(shí)現(xiàn)圖片上傳到zimg服務(wù)器上,希望大家能夠喜歡2016-10-10微信公眾號(hào)實(shí)現(xiàn)會(huì)員卡領(lǐng)取功能
這篇文章主要介紹了微信公眾號(hào)實(shí)現(xiàn)會(huì)員卡領(lǐng)取功能的相關(guān)資料,需要的朋友可以參考下2017-06-06Zend Framework教程之分發(fā)器Zend_Controller_Dispatcher用法詳解
這篇文章主要介紹了Zend Framework教程之分發(fā)器Zend_Controller_Dispatcher用法,結(jié)合實(shí)例形式詳細(xì)分析了分發(fā)器Zend_Controller_Dispatcher的結(jié)構(gòu),功能,使用技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2016-03-03PHP實(shí)現(xiàn)動(dòng)態(tài)web服務(wù)器方法
這篇文章主要通過(guò)PHP技術(shù)實(shí)現(xiàn)動(dòng)態(tài)web服務(wù)器的方法,有需要的朋友可以借鑒。2015-07-07Yii框架多語(yǔ)言站點(diǎn)配置方法分析【中文/英文切換站點(diǎn)】
這篇文章主要介紹了Yii框架多語(yǔ)言站點(diǎn)配置方法,結(jié)合實(shí)例形式分析了基于Yii框架實(shí)現(xiàn)中文/英文切換的多語(yǔ)言站點(diǎn)相關(guān)配置方法與操作注意事項(xiàng),需要的朋友可以參考下2020-04-04php計(jì)算程序運(yùn)行時(shí)間的簡(jiǎn)單例子分享
這篇文章主要介紹了php計(jì)算程序運(yùn)行時(shí)間的簡(jiǎn)單例子分享,需要的朋友可以參考下2014-05-05Apache無(wú)法自動(dòng)跳轉(zhuǎn)卻顯示目錄的解決方法
這篇文章主要為大家詳細(xì)介紹了Apache無(wú)法自動(dòng)跳轉(zhuǎn)卻顯示目錄的解決方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-07-07Laravel接收前端ajax傳來(lái)的數(shù)據(jù)的實(shí)例代碼
本篇文章主要介紹了Laravel接收前端ajax傳來(lái)的數(shù)據(jù)的實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-07-07