<?php
// 图片添加水印的方法
// 参数:source-主图、water-水印图、position-水印的位置(将图片分为九宫格)、alpha-透明度、type-输出图片格式、path-输出路径、isRandName-图片文件名是否随机
function watermark($source, $water, $position = 9, $alpha = 100, $type = 'jpeg', $path = 'test', $isRandName = true)
{
// 打开图片
$sourceRes = 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];
break;
default: //如果没有传1-9的数字就默认随机放
$x = mt_rand(0, $sourceInfo[0] - $waterInfo[0]);
$y = mt_rand(0, $sourceInfo[1] - $waterInfo[1]);
break;
}
// 使用刚求出的$x,$y合并两张图片
imagecopymerge($sourceRes, $waterRes, $x, $y, 0, 0, $waterInfo[0], $waterInfo[1], $alpha);
// 处理路径与文件名
$func = 'image' . $type;
/*
imagepng();
imagejpeg();
imagewbmp();
*/
if ($isRandName) {
$name = uniqid() . '.' . $type;
} else {
$pathInfo = pathinfo($source);
$name = $pathInfo['filename'] . '.' . $type;
}
$path = rtrim($path, '/') . '/' . $name;
$func($sourceRes, $path);
imagedestroy($sourceRes);
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 = imagecreatefromwebp($path);
break;
}
return $res;
}
// watermark('E:\phpstudy_pro\WWW\test.png', 'E:\phpstudy_pro\WWW\watermark.png', 1.2);
PHP封装一个添加水印的方法
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...