//

国产伦精品一区二区三区视频1,2020久热爱精品视频在线观看,91黄色国产精品,全集草久热的视频在线观看高清播放,精品国产在线免费视频,国产精品日韩高清伦字幕搜索,午夜作爱无码视频全集高清,国产精品成av电影不卡,免费成品网站源码1688免费推荐全集在线

Information for details

php常用類分享之圖片處理類

圖像處理類:

功能:實現(xiàn)圖片的多位置加水印,隨機(jī)加水印,圖片等比縮放。

<?php
class image{

    //成員屬性
    private $path;//傳入的路徑

    //初始化構(gòu)造方法,默認(rèn)為當(dāng)前文件夾的路徑
    public function __construct($path='./'){
        $this->path=rtrim($path,'/').'/';//去掉路徑右邊的/ 然后添加一個反斜杠,為了防止誤操作
    }
    //定義一個水印方法,參數(shù)有背景圖水印圖,水印位置,透明度,前綴
    public function water($background,$water,$pos=0,$pol=100,$prefix='wa_'){
        $background=$this->path.$background;//將圖片與路徑拼接
        $water=$this->path.$water;
        if(file_exists($background) && file_exists($water)){//判斷水印圖片與背景圖片是否存在
            $backInfo=self::getImageInfo($background);//獲取圖片的信息
            $waterInfo=self::getImageInfo($water);
            if(!self::checkSize($backInfo,$waterInfo)){//判斷水印圖是否大于背景圖
                echo '水印圖片大于背景圖片';
                return false;
            }
           $position=self::getPosition($backInfo,$waterInfo,$pos);//獲得圖片位置    
           if(!$backRes = self::openImg($background,$backInfo['type'])){//打開圖片
                echo '背景圖片打開失敗';
                return false;
            }
            if(!$waterRes=self::openImg($water,$waterInfo['type'])){
                echo '水印圖片打開失敗';
                return false;
            }
            $newRes=self::mergeImg($backRes,$waterRes,$position,$waterInfo,$pol);//合并圖片
            if($path=self::save($this->path,$newRes,$backInfo,$prefix)){//保存圖片
                self::des($backRes);
                self::des($waterRes);
                return false;
            }else{
                echo '保存圖片失敗';
                return false;
            }
        }else{
            echo '背景圖片或者水印圖片沒有找到';
            return false;
        }
    }
    //合并圖片的方法
    static private function mergeImg($b,$w,$p,$info,$pol){
        imagecopymerge($b,$w,$p['x'],$p['y'],0,0,$info['width'],$info['height'],$pol);
        return $b;
    }

    //獲得圖片屬性的方法
    static private function getImageInfo($img){
        $info=getimagesize($img);//使用獲得圖片信息的函數(shù)

        //將所有的信息放入一個數(shù)組
        $date['width']=$info[0];
        $date['height']=$info[1];
        $date['type']=$info['mime'];
        $date['name']=basename($img);//使用函數(shù)返回路徑中的文件名部分
        return $date;
    }

    //打開圖片的方法
    static private function openImg($img,$type){
        switch($type){
            case 'image/jpeg':
            case 'image/jpg':
            case 'image/pjpeg':
                $res=imagecreatefromjpeg($img);
                break;
            case 'image/png':
            case 'image/x-png':
                $res=imagecreatefrompng($img);
                break;
            case 'image.gif':
                $res=imagecreatefromgif($img);
                break;
            case 'image/wbmp':
                $res=imagecreatefromwbmp($img);
                break;
            default:
                $res=false;
        }
        return $res;
    }

/*========================== 圖片的等比縮放方法============================*/

 public function thumb($background,$width,$height,$prefix='th_'){
        $background=$this->prefix.$background;
        if(!file_exists($background)){
            echo '背景圖片不存在';
            return false;
        }
        $backInfo=self::getImageInfo($background);

        $newSize=self::getNewSize($width,$height,$backInfo);

        $res=self::openImg($background,$backInfo['type']);

        $newRes=self::kidOfImage($res,$newSize,$backInfo);

        if($path=self::save($this->path,$newRes,$backInfo,$prefix)){
            self::des($newRes);
            return $path;
        }

    }

    static private function kidOfImage($srcImg,$size, $imgInfo){
        $newImg = imagecreatetruecolor($size["width"], $size["height"]);
        $otsc = imagecolortransparent($srcImg);
        if( $otsc >= 0 && $otsc < imagecolorstotal($srcImg)) {
            $transparentcolor = imagecolorsforindex( $srcImg, $otsc );
            $newtransparentcolor = imagecolorallocate(
            $newImg,
            $transparentcolor['red'],
            $transparentcolor['green'],
            $transparentcolor['blue']
            );

            imagefill( $newImg, 0, 0, $newtransparentcolor );
            imagecolortransparent( $newImg, $newtransparentcolor );
        }
        imagecopyresized( $newImg, $srcImg, 0, 0, 0, 0, $size["width"], $size["height"],
$imgInfo["width"], $imgInfo["height"] );

        imagedestroy($srcImg);
        return $newImg;
    }

    static private function getNewSize($width, $height,$imgInfo){

        $size["width"]=$imgInfo["width"]; //將原圖片的寬度給數(shù)組中的$size["width"]

        $size["height"]=$imgInfo["height"];//將原圖片的高度給數(shù)組中的$size["height"]

        if($width < $imgInfo["width"]){
            $size["width"]=$width;//縮放的寬度如果比原圖小才重新設(shè)置寬度
        }

        if($width < $imgInfo["height"]){
            $size["height"]=$height;//縮放的高度如果比原圖小才重新設(shè)置高度
        }

        if($imgInfo["width"]*$size["width"] > $imgInfo["height"] * $size["height"]){
            $size["height"]=round($imgInfo["height"]*$size["width"]/$imgInfo["width"]);
        }else{
            $size["width"]=round($imgInfo["width"]*$size["height"]/$imgInfo["height"]);
        }

        return $size;
    }
/*=============================圖片縮放結(jié)束==============================*/
    //獲得水印圖片位置的方法
    static private function getPosition($b,$w,$p){

        switch($p){
            case 1://在x為0 y為 0 的情況
                $x=0;
                $y=0;
            break;
            case 2://x軸在中間 Y為0
                $x=ceil(($b['width']-$w['width'])/2);
                $y=0;
            break;
            case 3:
                $x=$b['width']-$w['width'];//背景寬-水印寬
                $y=0;
            break;
            case 4:
                $x=0;
                $y=ceil(($b['height']-$w['height'])/2);
            break;
            case 5:
                $x=ceil(($b['width']-$w['width'])/2);
                $y=ceil(($b['height']-$w['height'])/2);
                break;
            case 6:
                $x=$b['width']-$w['width'];
                $y=ceil(($b['height']-$w['height'])/2);
                break;
            case 7:
                $x=0;
                $y=$b['height']-$w['height'];//背景高-水印高
                break;
            case 8:
                $x=ceil(($b['width']-$w['width'])/2);
                $y=$b['height']-$w['height'];
                break;

            case 9:
                $x=$b['width']-$w['width'];
                $y=$b['height']-$w['height'];
                break;
            default:
                $x=mt_rand(0,$b['width']-$w['width']);
                $y=mt_rand(0,$b['height']-$w['height']);
                break;
        }
        //我們將圖片的位置以數(shù)組的形式返回
     return array('x'=>$x,'y'=>$y);
    }

    //檢測水印圖片的大小是否大于背景圖,填入背景圖與水印圖的INFO
    static function checkSize($b,$m){
        if($b['width']<=$w['width'] || $b['height']<=$w['height']){
            //水印圖片大或者于背景圖片返回假
            return false;
        }else{
            //否則返回真
            return true;
        }
    }
    //保存圖片的方法
    static private function save($path,$res,$info,$prefix){
        $path=$path.$prefix.$info['name'];
         switch($info['type']){
            case 'image/jpeg':
            case 'image/jpg':
            case 'image/pjpeg':
                    $res=imagejpeg($res,$path);
                    break;
            case 'image/png':
            case 'image/x-png':
                    $res=imagejpeg($res,$path);
                    break;
            case 'image.gif':
                    $res=imagegif($res,$path);
                    break;
            case 'image/wbmp':
                    $res=imagewbmp($res,$path);
                    break;
        }
        return $path;
    }

    //銷毀圖片的方法
    static private function des($res){
        imagedestroy($res);
    }
}
?>


云南然成科技有限公司是一家本土的云南軟件開發(fā)公司,公司成立于2015年初,2017年獲得云南省科技廳、省財政廳、省國稅局、地稅局等機(jī)構(gòu)認(rèn)定的高新技術(shù)企業(yè)。公司定位于高端網(wǎng)站設(shè)計、系統(tǒng)開發(fā)、APP開發(fā)、微信公眾號、微信小程序開發(fā)。擁有多個軟著權(quán),公司先后為多家事業(yè)單位提供服務(wù),比如會澤文化館、宣威文化館、中科院昆明植物研究所等。其中中國科學(xué)院昆明植物研究所已經(jīng)進(jìn)行了長達(dá)4年的合作,并且還持續(xù)合作中!

  • 滇公網(wǎng)安備 53010202001388號