/**
* 图片增加水印
* @param $img 待加水印的图片地址
* @param $watermark 水印图片的地址
* @param int $district
* @param int $watermarkquality
* @return bool|void
*/
function watermark($img, $watermark, $district = 5,$watermarkquality = 95){
$imginfo = getimagesize($img);
$width = $imginfo[0];
if($imginfo[0] > $imginfo[1]) $width = $imginfo[1];
$width = $width / 2;
$size = 'static/layuimini/images/thum'.time().'.png';
if(resize_image($watermark,$size,$width ,$width)) $watermark = $size;
$watermarkinfo = getimagesize($watermark);
$img_w = $imginfo[0];
$img_h = $imginfo[1];
$watermark_w = $watermarkinfo[0];
$watermark_h = $watermarkinfo[1];
// $watermark_w = $imginfo[0] / 2;
// $watermark_h = $imginfo[1] / 2;
if($district == 0) $district = rand(1,9);
if(!is_int($district) OR 1 > $district OR $district > 9) $district = 9;
switch($district){
case 1:
$x = +5;
$y = +5;
break;
case 2:
$x = ($img_w - $watermark_w) / 2;
$y = +5;
break;
case 3:
$x = $img_w - $watermark_w - 5;
$y = +5;
break;
case 4:
$x = +5;
$y = ($img_h - $watermark_h) / 2;
break;
case 5:
$x = ($img_w - $watermark_w) / 2;
$y = ($img_h - $watermark_h) / 2;
break;
case 6:
$x = $img_w - $watermark_w;
$y = ($img_h - $watermark_h) / 2;
break;
case 7:
$x = +5;
$y = $img_h - $watermark_h - 5;
break;
case 8:
$x = ($img_w - $watermark_w) / 2;
$y = $img_h - $watermark_h - 5;
break;
case 9:
$x = $img_w - $watermark_w - 5;
$y = $img_h - $watermark_h - 5;
break;
}
switch ($imginfo[2]) {
case 1:
$im = imagecreatefromgif($img);
break;
case 2:
$im = imagecreatefromjpeg($img);
break;
case 3:
$im = imagecreatefrompng($img);
break;
}
switch ($watermarkinfo[2]) {
case 1:
$watermark_logo = imagecreatefromgif($watermark);
break;
case 2:
$watermark_logo = imagecreatefromjpeg($watermark);
break;
case 3:
$watermark_logo = imagecreatefrompng($watermark);
break;
}
if(!$im or !$watermark_logo) return false;
$dim = imagecreatetruecolor($img_w, $img_h);
if(imagecopy($dim, $im, 0, 0, 0, 0,$img_w,$img_h )){
imagecopy($dim, $watermark_logo, $x, $y, 0, 0, $watermark_w, $watermark_h);
}
$file = 'storage/w/w' . basename($img);
$result = imagejpeg ($dim,$file,$watermarkquality);
imagedestroy($watermark_logo);
imagedestroy($dim);
imagedestroy($im);
if($result){
unlink($watermark);
return $file;
}
else {
return false;
}
}
/**
* 改变图片的宽高
* @param string $img_src 原图片的存放地址或url
* @param string $new_img_path 新图片的存放地址
* @param int $new_width 新图片的宽度
* @param int $new_height 新图片的高度
* @return bool 成功true, 失败false
*/
function resize_image($img_src, $new_img_path, $new_width, $new_height)
{
$img_info = @getimagesize($img_src);
if (!$img_info || $new_width < 1 || $new_height < 1 || empty($new_img_path)) {
return false;
}
if (strpos($img_info['mime'], 'jpeg') !== false) {
$pic_obj = imagecreatefromjpeg($img_src);
} else if (strpos($img_info['mime'], 'gif') !== false) {
$pic_obj = imagecreatefromgif($img_src);
} else if (strpos($img_info['mime'], 'png') !== false) {
$pic_obj = imagecreatefrompng($img_src);
} else {
return false;
}
$pic_width = imagesx($pic_obj);
$pic_height = imagesy($pic_obj);
if (function_exists("imagecopyresampled")) {
imagesavealpha($pic_obj, true); // 保留源图片透明度
$new_img = imagecreatetruecolor($new_width,$new_height);
imagealphablending($new_img, false); // 不合并图片颜色
imagesavealpha($new_img, true); // 保留目标图片透明度
imagecopyresampled($new_img, $pic_obj, 0, 0, 0, 0, $new_width, $new_height, $pic_width, $pic_height);
} else {
imagesavealpha($pic_obj, true); // 保留源图片透明度
$new_img = imagecreate($new_width, $new_height);
imagealphablending($new_img, false); // 不合并图片颜色
imagesavealpha($new_img, true); // 保留目标图片透明度
imagecopyresized($new_img, $pic_obj, 0, 0, 0, 0, $new_width, $new_height, $pic_width, $pic_height);
}
if (preg_match('~.([^.]+)$~', $new_img_path, $match)) {
$new_type = strtolower($match[1]);
switch ($new_type) {
case 'jpg':
imagejpeg($new_img, $new_img_path);
break;
case 'gif':
imagegif($new_img, $new_img_path);
break;
case 'png':
imagepng($new_img, $new_img_path);
break;
default:
imagejpeg($new_img, $new_img_path);
}
} else {
imagejpeg($new_img, $new_img_path);
}
imagedestroy($pic_obj);
imagedestroy($new_img);
return true;
}