php(GD库合成水印)

代码如下:

<?php
water('1.jpg');
function water($source,$water='3.jpg',$position=8,$alpha=100,
$type='jpeg',$path='test',$isRandName=false)
{
    
    
	//打开图片
	$sourceRse = open($source);
	$waterRes = open($water);
	//获取图片大小,算出来位置
	$sourceInfo = getimagesize($source);
	$waterInfo = getimagesize($water);
	switch($position){
    
    
		case 1:
			$x = 0;
			$y = 0;
			break;
		case 2:
			$x = ($sourceInfo[0] - $waterInfo[0])/2;
			$y = 0;
			break;
		case 3:
			$x = $sourceInfo[0] - $waterInfo[0];
			$y = 0;
			break;
		case 4:
			$x = 0;
			$y = ($sourceInfo[1] - $waterInfo[1])/2;
			break;
		case 5:
			$x = ($sourceInfo[0] - $waterInfo[0])/2;
			$y = ($sourceInfo[1] - $waterInfo[1])/2;
			break;
		case 6:
			$x = $sourceInfo[0] - $waterInfo[0];
			$y = ($sourceInfo[1] - $waterInfo[1])/2;
			break;
		case 7:
			$x = 0;
			$y = $sourceInfo[1] - $waterInfo[1];
			break;
		case 8:
			$x = ($sourceInfo[0] - $waterInfo[0])/2;
			$y = $sourceInfo[1] - $waterInfo[1];
			break;
		case 9:
			$x = $sourceInfo[0] - $waterInfo[0];
			$y = $sourceInfo[1] - $waterInfo[1];
			echo $x.' '.$y;
			break;
		default:
			$x = mt_rand(0,$sourceInfo[0] - $waterInfo[0]);
			$y = mt_rand(0,$sourceInfo[1] - $waterInfo[1]);
			break;
	}
	//合并图片到source上
	imagecopymerge($sourceRse,$waterRes,$x,$y,0,0,$waterInfo[0],$waterInfo[1],$alpha);
	
	if($isRandName){
    
    
		//uniqid函数生成随机字符串。
		$name = uniqid().'.'.$type;
	}else{
    
    
		$pathinfo = pathinfo($source);
		$name = $pathinfo['filename'].'.'.$type;
	}
	//rtrim删除字符串末端的空白字符(或者其他字符)
	$path = rtrim($path,'/').'/'.$name;
	// 相当于调用了imagejpeg()函数,这操作。。
	$func = 'image'.$type;
	$func($sourceRse,$path);
	imagedestroy($sourceRse);
	imagedestroy($waterRes);
}	
//打开图片的函数
function open($path)
{
    
    
	//判断是否存在
	if(!file_exists($path)){
    
    
		exit('文件不存在');
	}
	$info = getimagesize($path);
	//var_dump($info);
	switch($info['mime']){
    
    
		case 'image/jpeg':
		case 'image/jpg':
		case 'image/pjpeg':
			$res = imagecreatefromjpeg($path);
			break;
		case 'image/png':
			$res = imagecreatefrompng($path);
			break;
		case 'image/gif':
			$res = imagecreatefromgif($path);
			break;
		case 'image/wbmp':
		case 'image/bmp':
			$res = imagecreatefromwbmp($path);
			break;
		
	}
	
	return $res; //返回打开的资源
}
 
?>

getimagesize函数返回一个数组,包含了图片的宽和高,图片类型等信息。

在这里插入图片描述

这个是getimagesize函数返回的数据。

在这里插入图片描述

imagecopymerge函数用来拷贝合并图像。

在这里插入图片描述

下面这个操作》》》》太秀了,只有php才这么叼吧,把字符串当对应函数用。。。。

在这里插入图片描述

下面是imagejpeg函数:

在这里插入图片描述

下面是一个骚操作的对应上面的例子,这下应该就很明显了。。

在这里插入图片描述

返回了一个随机数。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_46456049/article/details/108589696