亚洲乱码卡一卡二卡三永久-亚洲乱码一二三四区-亚洲乱码一区二区三区在线观看-亚洲伦理一区-成人在色线视频在线观看免费大全-成人在线91

/**
 * 圖片工具類,支持縮略圖, 獲取類型等
 *

	
 *      ImgUtil::thumbnailTo("src.jpg",100,100,"src_100.jpg");
 *      ImgUtil::thumbnailBat("src.jpg",array(
 *          array("width"=>50,"height"=>50,"file"=>"src_50.jpg"),
 *          array("width"=>100,"height"=>100,"file"=>"src_100.jpg"),
 *          array("width"=>180,"height"=>180,"file"=>"src_180.jpg"),
 *      ));
 *
 */
class ImgUtil
{
    
 
    /**
     * 生成縮略圖
     * @param string $src       源文件路徑
     * @param int $width        縮略圖寬度
     * @param int $height       縮略圖高度
     * @param string $toFile    目標文件地址
     */
    public static function thumbnailTo($src, $width, $height, $toFile){
        return self::resizeTo($src, $width, $height, $toFile, true, true);
    }
    /**
     * 批量縮略圖
     * @param string $src   源文件路徑
     * @param array $list array(array("width"=>"寬","height"=>"高","file"=>"存儲文件路徑"))
     */
    public static function thumbnailBat($src, $list){
        $img = new ImgUtil($src);
        $srcImg = $img->resource;
        $srcWidth = imagesx($srcImg);
        $srcHeight = imagesy($srcImg);
        foreach($list as $k=>$info){
            $toWidth = $info["width"];
            $toHeight = $info["height"];
            self::scale($toWidth, $toHeight, $srcWidth, $srcHeight, true, true);
            $retImg = self::scaleToImg($srcImg, $toWidth, $toHeight, $srcWidth, $srcHeight);
            $toFile = $info["file"];
            self::saveTo($retImg, $toFile, $img->type);
            imagedestroy($retImg);
        }
        return true;
    }
    /**
     * 拉伸圖片到目標大小
     * @param string $src       源文件路徑
     * @param int $width        目標尺寸
     * @param int $height       目標尺寸
     * @param string $toFile    縮放后存儲文件
     */
    public static function resizeForceTo($src, $width, $height, $toFile){
        return self::resizeTo($src, $width, $height, $toFile, false, false);
    }
    /**
     * @param string $src        目錄文件
     * @param int $width         目標尺寸
     * @param int $height        目標尺寸
     * @param string $toFile     縮放后存儲文件
     * @param boolean $ratio     保持比例
     * @param boolean $thumbnail 如果為false支持等比放大 true則只支持等比從大到小
     */
    public static function resizeTo($src, $width, $height, $toFile, $ratio=TRUE, $thumbnail=FALSE){
        $img = new ImgUtil($src);
        $srcImg = $img->resource;
    
        $srcWidth = imagesx($srcImg);
        $srcHeight = imagesy($srcImg);
        self::scale($width, $height, $srcWidth, $srcHeight, $ratio, $thumbnail);
        $retImg = self::scaleToImg($srcImg, $width, $height, $srcWidth, $srcHeight);
        $img->destory();
        if(!$toFile || empty($toFile)){
            $toFile = $src;
        }
        self::saveTo($retImg, $toFile, $img->type);
        imagedestroy($retImg);
        return true;
    }
    /**
     * 縮放srcImgResource
     * @param resource $srcImg ImageResource
     * @param int $toWidth   toWidth
     * @param int $toHeight  toHeight
     * @param int $srcWidth  srcWidth
     * @param int $srcHeight srcHeight
     * @return resource      ImageResource
     */
    public static function scaleToImg($srcImg,$toWidth,$toHeight,$srcWidth=-1,$srcHeight=-1){
        if($srcWidth<0||$srcHeight<0){
            $srcWidth = imagesx($srcImg);
            $srcHeight = imagesy($srcImg);
        }
        if(function_exists("imagecopyresampled")){
            $toImg = imagecreatetruecolor($toWidth, $toHeight);
            imagecopyresampled($toImg,$srcImg,0,0,0,0,$toWidth,$toHeight,$srcWidth,$srcHeight);
        }else{
            $toImg = imagecreate($toWidth,$toHeight);
            imagecopyresized($toImg,$srcImg,0,0,0,0,$toWidth,$toHeight,$srcWidth,$srcHeight);
        }
        return $toImg;
    }
    /**
     * 根據(jù)是否保持比例是否縮略圖,計算縮放后的真實尺寸
     * @param int $toWidth       toWidth
     * @param int $toHeight      toHeight
     * @param int $srcWidth      srcWidth
     * @param int $srcHeight     srcHeight
     * @param boolean $ratio     保持比例
     * @param boolean $thumbnail 如果為false支持等比放大 true則只支持等比從大到小
     */
    public static function scale(&$toWidth,&$toHeight,$srcWidth,$srcHeight, $ratio=TRUE, $thumbnail=FALSE){
        if($ratio || $thumbnail){
            if($thumbnail && ($srcWidth<$toWidth && $srcHeight<$toHeight)){
                $toWidth = $srcWidth;
                $toHeight = $srcHeight;
            }else{
                if (($toWidth/$toHeight) <= ($srcWidth/$srcHeight)){
                    $toHeight = intval($toWidth * ($srcHeight / $srcWidth));
                }else{
                    $toWidth = intval($toHeight * ($srcWidth / $srcHeight));
                }
            }
        }
    }
    /**
     * 保存ImageResource到文件
     * @param resource $image
     * @param string $file
     * @param string $type
     */
    public static function saveTo($image,$file,$type="jpg"){
        if($type=="png"){
            imagepng($image, $file);
        }else if($type=="gif"){
            $transColor = imagecolorallocatealpha($image, 255, 255, 255, 127);
            imagecolortransparent($image, $transColor);
            imagegif($image, $file);
        }else{
            imagejpeg($image, $file, 100);
        }
    }   
    
    
    public $resource;
    public $type = null;
    public function __construct($src){
        if(is_string($src)){
            if(file_exists($src) && is_readable($src)){
                $info = getimagesize($src);
                if($info){
                    if ($info[2] == IMAGETYPE_JPEG){
                        $this->resource = imagecreatefromjpeg($src);
                        $this->type = "jpeg";
                    }else if($info[2] == IMAGETYPE_PNG){
                        $this->resource = @imagecreatefrompng($src);
                        $this->type = "png";
                    }else if($info[2] == IMAGETYPE_GIF){
                        $this->resource = @imagecreatefromgif($src);
                        $this->type = "gif";
                    }else if($info[2] == IMAGETYPE_BMP){
                        $this->resource = @imagecreatefromwbmp($src);
                        $this->type = "bmp";
                    }
                }
            }else{
                $this->resource = @imagecreatefromstring($src);
            }
        }else if(is_array($src) && count($src)>1){
            if(isset($src[0])){
                $this->resource = imagecreatetruecolor($src[0], $src[1]);
            }else{
                $this->resource = imagecreatetruecolor($src["width"], $src["height"]);
            }
        }else if(is_resource($src)){
            $this->resource = $src;
        }else if(get_class($src)==get_class($this)){
            $this->resource = $src->resource;
            $this->type = $src->type;
        }
        if($this->resource==null){
            throw new Exception("ArgumentError:".$src);
        }
    }
    public function width()
    {
        return imagesx($this->resource);
    }
    public function height()
    {
        return imagesy($this->resource);
    }
    public function save($file,$type=null){
        if($type==null){
            $type = $this->type;
        }
        self::saveTo($this->resource, $file, $type);
    }
    public function destory(){
        imagedestroy($this->resource);
    }
    
}
 
?>

 

穩(wěn)定

產(chǎn)品高可用性高并發(fā)

貼心

項目群及時溝通

專業(yè)

產(chǎn)品經(jīng)理1v1支持

快速

MVP模式小步快跑

承諾

我們選擇聲譽

堅持

10年專注高端品質(zhì)開發(fā)
  • 返回頂部
主站蜘蛛池模板: 精品一区二区免费视频 | 美日韩精品| 色黄在线观看 | 午夜精品在线免费观看 | 综合精品视频 | 亚洲国产日韩在线人高清 磁力 | 丁香激情综合色伊人久久 | 欧美激情视频二区三区 | 中文字幕在线视频免费 | 我要看黄色特级黄色录像 | 手机看片国产精品 | tk挠脚心丝袜天堂网站免费控 | 91大片淫黄大片.在线天堂 | 欧美一区日韩一区中文字幕页 | 成年视频xxxxxx在线 | 免费视频中文字幕 | 一级毛片免费视频 | 国产剧情一区二区 | 亚洲欧美v视色一区二区 | 欧美jizz18性欧美 | 99精彩视频在线观看 | 亚洲成人福利在线观看 | 日本视频二区 | a国产 | 国产精品久久久尹人香蕉 | 人人做人人澡人人人爽 | 久久久久亚洲视频 | 最近免费中文字幕大全高清10 | 手机看片a永久免费看大片 手机看片91精品一区 | 日本三级一区二区三区 | 全免费观看a级毛片 | 午夜影湿院 | a黄视频 | 国产精品九九九久久九九 | freexxxx性大陆另类 | 99久久国产综合精品麻豆 | 成在线人免费视频一区二区三区 | 欧美xxxx色视频在线观看免费 | 日韩欧美无线在码 | 最好看2019高清中文字幕 | 亚洲高清免费观看 |