PHP 添加水印 & 比例缩略图 & 固定高度 & 固定宽度 类。

开发技术 作者: 2024-07-27 11:35:01
PHP 添加水印 & 比例缩略图 & 固定高度 & 固定宽度 类。

下面是编程之家 jb51.cc 通过网络收集整理的代码片段。

编程之家小编现在分享给大家,也给大家做个参考。

<?PHP   
//PHP 添加水印 & 比例缩略图 & 固定高度 & 固定宽度 类。  
class Image_process{  
    public $source; //原图  
    public $source_width;   //原图宽度  
    public $source_height;  //原图高度  
    public $source_type_id;  
    public $orign_name;  
    public $orign_dirname;  
      
    //传入原图路径  
    public function __construct($source){  
        $this->typeList = array(1=>'gif',2=>'jpg',3=>'png');  
        $ginfo = getimagesize($source);  
        $this->source_width = $ginfo[0];  
        $this->source_height = $ginfo[1];  
        $this->source_type_id = $ginfo[2];  
        $this->orign_url = $source;  
        $this->orign_name = basename($source);  
        $this->orign_dirname = dirname($source);  
    }  
      
    //判断图片的文件的格式,返回PHP可识别的编码  
    public function judgeType($type,$source){  
        if($type == 1){  
            return imagecreatefromgif($source); //gif  
        }else if($type == 2){  
            return imagecreatefromjpeg($source); //jpg  
        }else if($type == 3){  
            return imagecreatefrompng($source); //png  
        }else{  
            return false;  
        }  
    }  
      
    //生成水印图片  
    public function waterMakeImage($logo){  
        $linfo = getimagesize($logo);  
        $logo_width = $linfo[0];  
        $logo_height = $linfo[1];  
        $logo_type_id = $linfo[2];  
        $sourceHandle = $this->judgeType($this->source_type_id,$this->orign_url);  
        $logoHandle = $this->judgeType($logo_type_id,$logo);  
        if(!$sourceHandle || !$logoHandle){  
            return false;  
        }  
        $x = ($this->source_width - $logo_width)/2;  
        $y = ($this->source_height - $logo_height)/2;  
        imagecopy($sourceHandle,$logoHandle,$x,$y,$logo_width,$logo_height);  
        $newPic = $this->orign_dirname.'\water_'.time().'.'.$this->typeList[$this->source_type_id];  
        if($this->saveImage($sourceHandle,$newPic)){  
            imagedestroy($sourceHandle);  
            imagedestroy($logoHandle);  
        }  
    }  
      
    //固定高度宽度  
    public function fixSizeImage($width,$height){  
        if($width > $this->source_width) $this->source_width;  
        if($height > $this->source_height) $this->source_height;  
        if($width === false){  
            $width = floor($this->source_width / ($this->source_height / $height));  
        }  
        if($height === false){  
            $height = floor($this->source_height / ($this->source_width / $width));  
        }  
        $this->tinyImage($width,$height);  
    }  
      
    //等比例缩放图片  
    public function scaleImage($scale){  
        $width = floor($this->source_width * $scale);  
        $height = floor($this->source_height * $scale);  
        $this->tinyImage($width,$height);  
    }  
      
    //创建缩略图  
    public function tinyImage($width,$height){  
        $tinyImage = imagecreatetruecolor($width,$height);  
        $handle = $this->judgeType($this->source_type_id,$this->orign_url);  
        if(function_exists('imagecopyresampled')){  
            imagecopyresampled($tinyImage,$handle,$width,$height,$this->source_width,$this->source_height);  
        }else{  
            imagecopyresized($tinyImage,$this->source_height);  
        }  
        $newPic = $this->orign_dirname.'\thumb_'.time().'_'.$width."_".$height.".".$this->typeList[$this->source_type_id];  
        if($this->saveImage($tinyImage,$newPic)){  
            imagedestroy($tinyImage);  
            imagedestroy($handle);  
        }  
    }  
    //保存图片  
    private function saveImage($image,$url){  
        if(imagejpeg($image,$url)){  
            return true;  
        }  
    }  
}  
$imgHandle = new Image_process('D:\AppServ\www\test\getimg\14061907445601.jpg');  
//$imgHandle->waterMakeImage('D:\AppServ\www\test\getimg\shougongke.png');   //生成水印图片  
//$imgHandle->fixSizeImage(200,150); //固定长度图片  
$imgHandle->scaleImage(0.2); //等比例缩放  
?> 

以上是编程之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
本文链接:http://www.jiecseo.com/news/show_51666.html