代码如下:
<?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;
}
imagecopymerge($sourceRse,$waterRes,$x,$y,0,0,$waterInfo[0],$waterInfo[1],$alpha);
if($isRandName){
$name = uniqid().'.'.$type;
}else{
$pathinfo = pathinfo($source);
$name = $pathinfo['filename'].'.'.$type;
}
$path = rtrim($path,'/').'/'.$name;
$func = 'image'.$type;
$func($sourceRse,$path);
imagedestroy($sourceRse);
imagedestroy($waterRes);
}
function open($path)
{
if(!file_exists($path)){
exit('文件不存在');
}
$info = getimagesize($path);
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函数:
下面是一个骚操作的对应上面的例子,这下应该就很明显了。。
返回了一个随机数。