最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP的一個(gè)完美GIF等比縮放類,附帶去除縮放黑背景

 更新時(shí)間:2014年04月01日 14:25:49   作者:  
我這里沒有判斷文件類型,因?yàn)閜ng和jpeg縮放后都不會(huì)出現(xiàn)黑色背景,就單獨(dú)gif不行..查了下資料發(fā)現(xiàn)了一個(gè)完美的解決辦法,附帶有詳解

現(xiàn)在寫東西都喜歡封裝成類.....大家調(diào)用一下就行了..我就不說怎么調(diào)用了

復(fù)制代碼 代碼如下:
<?php
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);
           //然后我們在把填充色設(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)用...程序看起來很笨拙啊......

相關(guān)文章

  • php加密解密字符串示例

    php加密解密字符串示例

    加密解密在一個(gè)系統(tǒng)中的應(yīng)用是非常常見的需求,PHP做的網(wǎng)站中,也會(huì)經(jīng)常使用的PHP加密解密字符串函數(shù).
    2016-10-10
  • Yii使用find findAll查找出指定字段的實(shí)現(xiàn)方法

    Yii使用find findAll查找出指定字段的實(shí)現(xiàn)方法

    這篇文章主要介紹了Yii使用find findAll查找出指定字段的實(shí)現(xiàn)方法,非常實(shí)用的技巧,需要的朋友可以參考下
    2014-09-09
  • php cc攻擊代碼與防范方法

    php cc攻擊代碼與防范方法

    今天把客戶查找后門的時(shí)候發(fā)現(xiàn)的代碼,特分享下,看到這樣的代碼就是黑客用來攻擊別人訪問,不斷訪問指定網(wǎng)站,導(dǎo)致網(wǎng)站無法訪問,我們的網(wǎng)站就是幫兇了,同時(shí)我們自己的網(wǎng)站或服務(wù)器也會(huì)無法訪問,所以一定要注意防范。
    2012-10-10
  • php實(shí)現(xiàn)學(xué)生管理系統(tǒng)

    php實(shí)現(xiàn)學(xué)生管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了php學(xué)生管理系統(tǒng)的具體實(shí)現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-07-07
  • laravel-admin表單提交隱藏一些數(shù)據(jù),回調(diào)時(shí)獲取數(shù)據(jù)的方法

    laravel-admin表單提交隱藏一些數(shù)據(jù),回調(diào)時(shí)獲取數(shù)據(jù)的方法

    今天小編就為大家分享一篇laravel-admin表單提交隱藏一些數(shù)據(jù),回調(diào)時(shí)獲取數(shù)據(jù)的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • PHP把小數(shù)轉(zhuǎn)成整數(shù)3種方法

    PHP把小數(shù)轉(zhuǎn)成整數(shù)3種方法

    這篇文章主要介紹了PHP把小數(shù)轉(zhuǎn)成整數(shù)3種方法,實(shí)際上是使用的PHP自帶的3個(gè)函數(shù),分別是floor、ceil和round,需要的朋友可以參考下
    2014-06-06
  • 詳解Laravel5.6 Passport實(shí)現(xiàn)Api接口認(rèn)證

    詳解Laravel5.6 Passport實(shí)現(xiàn)Api接口認(rèn)證

    這篇文章主要介紹了詳解Laravel5.6 Passport實(shí)現(xiàn)Api接口認(rèn)證,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-07-07
  • Yii CGridView用法實(shí)例詳解

    Yii CGridView用法實(shí)例詳解

    這篇文章主要介紹了Yii CGridView用法,結(jié)合實(shí)例形式分析了CGridView的功能、用法與相關(guān)屬性用法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07
  • PHP安裝擴(kuò)展mcrypt以及相關(guān)依賴項(xiàng)深入講解

    PHP安裝擴(kuò)展mcrypt以及相關(guān)依賴項(xiàng)深入講解

    這篇文章主要介紹了PHP安裝擴(kuò)展mcrypt以及相關(guān)依賴項(xiàng)深入講解,步驟講解的很清晰,有需要的同學(xué)可以研究下
    2021-03-03
  • 圖文詳解laravel多對多關(guān)聯(lián)模型

    圖文詳解laravel多對多關(guān)聯(lián)模型

    多對多就相當(dāng)于一個(gè)專題Topic有多個(gè)文章,但是這多個(gè)文章又屬于多個(gè)專題,下面這篇文章主要給大家介紹了關(guān)于laravel多對多關(guān)聯(lián)模型的相關(guān)資料,需要的朋友可以參考下
    2021-08-08

最新評(píng)論

大理市| 石嘴山市| 克山县| 西华县| 侯马市| 离岛区| 涿州市| 苍山县| 白城市| 宜君县| 广宁县| 永济市| 高唐县| 广昌县| 吐鲁番市| 长宁县| 灵寿县| 满洲里市| 罗源县| 南陵县| 沙坪坝区| 古田县| 平昌县| 陵川县| 黑山县| 东乡| 尤溪县| 海盐县| 新营市| 开鲁县| 湾仔区| 大悟县| 安宁市| 高陵县| 新昌县| 景宁| 措勤县| 灵武市| 郁南县| 合肥市| 博乐市|