PHP的一個(gè)完美GIF等比縮放類,附帶去除縮放黑背景
現(xiàn)在寫東西都喜歡封裝成類.....大家調(diào)用一下就行了..我就不說怎么調(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透明色為黑色背景的問題
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è)等比例縮放大小的畫布
$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);
}
//拷貝原圖像到新畫板上
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;
}
//最終銷毀資源
function __destruct(){
imagedestroy($this->o_img_source);
imagedestroy($this->n_img_source);
}
}
說明:因?yàn)橄惹皼]想那么多所以聲明了很多私有的內(nèi)部變量以便調(diào)用...程序看起來很笨拙啊......
- PHP使用GIFEncoder類處理gif圖片實(shí)例
- PHP生成Gif圖片驗(yàn)證碼
- php調(diào)整gif動(dòng)畫圖片尺寸示例代碼分享
- PHP之生成GIF動(dòng)畫的實(shí)現(xiàn)方法
- 完美實(shí)現(xiàn)GIF動(dòng)畫縮略圖的php代碼
- PHP使用GIFEncoder類生成gif動(dòng)態(tài)滾動(dòng)字幕
- PHP使用GIFEncoder類生成的GIF動(dòng)態(tài)圖片驗(yàn)證碼
- PHP基于GD庫的縮略圖生成代碼(支持jpg,gif,png格式)
- PHP支持多種格式圖片上傳(支持jpg、png、gif)
- php判斷GIF圖片是否為動(dòng)畫的方法
相關(guān)文章
laravel實(shí)現(xiàn)于語言包的完美切換方法
今天小編就為大家分享一篇laravel實(shí)現(xiàn)于語言包的完美切換方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-09-09PHP實(shí)現(xiàn)上傳圖片到 zimg 服務(wù)器
zimg是一個(gè)具有圖片處理功能的圖片存儲(chǔ)服務(wù),你可以上傳圖片到zimg服務(wù)器,然后通過帶有參數(shù)的URL來獲取被處理過的圖片,今天我們的主要內(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ù)器方法
這篇文章主要通過PHP技術(shù)實(shí)現(xiàn)動(dòng)態(tài)web服務(wù)器的方法,有需要的朋友可以借鑒。2015-07-07Yii框架多語言站點(diǎn)配置方法分析【中文/英文切換站點(diǎn)】
這篇文章主要介紹了Yii框架多語言站點(diǎn)配置方法,結(jié)合實(shí)例形式分析了基于Yii框架實(shí)現(xiàn)中文/英文切換的多語言站點(diǎn)相關(guān)配置方法與操作注意事項(xiàng),需要的朋友可以參考下2020-04-04php計(jì)算程序運(yùn)行時(shí)間的簡單例子分享
這篇文章主要介紹了php計(jì)算程序運(yùn)行時(shí)間的簡單例子分享,需要的朋友可以參考下2014-05-05Apache無法自動(dòng)跳轉(zhuǎn)卻顯示目錄的解決方法
這篇文章主要為大家詳細(xì)介紹了Apache無法自動(dòng)跳轉(zhuǎn)卻顯示目錄的解決方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-07-07Laravel接收前端ajax傳來的數(shù)據(jù)的實(shí)例代碼
本篇文章主要介紹了Laravel接收前端ajax傳來的數(shù)據(jù)的實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-07-07