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

<?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,0,0,$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, 0, 0, 0, 0, $width, $height, $this->source_width, $this->source_height);
		}else{
			imagecopyresized($tinyImage, $handle, 0, 0, 0, 0, $width, $height, $this->source_width, $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);	//等比例缩放
?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值