<?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封装一个添加水印的方法
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。