php给图片加png水印,php给图片添加图案水印

php给图片添加图案水印

2018-04-21

243

今天遇到一个需求要给图片添加水印,于是百度了下用下面的方法实现了//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、付费专栏及课程。

余额充值