当前位置:   article > 正文

PHP添加水印

PHP添加水印

来源:PHP基础案例教程
在PHP中,水印的实现通常使用imagecopymerge()函数,它既可以完成水印的添加,又可以设置水印合并的程度
water.php
根据imagecopymerge()函数的参数,可以确定自定义的水印生成函数watermark()需要的参数、原图和水印图片的路径

<?php
/*
 *使用数组根据MIME类型保存对应的函数
 * 参数一:表示图片的路径
 * 参数二:用于区分是创建资源还是输出资源
 */
  $func=[
  'image/jpeg' =>function($file,$img=null){
  	return $img ? imagepng($img):imagecreatefromjpeg($file);
  },
   'image/png' =>function($file,$img=null){
  	return $img ? imagepng($img):imagecreatefrompng($file);
  },
    'image/gif' =>function($file,$img=null){
  	return $img ? imagepng($img):imagecreatefromgif($file);
  }
  ];
/**
 * $srcfile:原图路径
 * $waterfile:水印图片路径
 * $pct:水印合并的效果,默认为100
 * $position:添加水印的位置,默认左上角
 * 左上角:1,右上角:2,中间:3,左下:4,右下:5
 */
 function watermark($srcfile,$waterfile,$pct=100,$position=1){
 	//根据MIME类型和路径完成原图和水印图片资源的创建
 	$src_mime=getimagesize($srcfile)['mime'];
	$wat_mime=getimagesize($waterfile)['mime'];
	$src=$GLOBALS['func'][$src_mime]($srcfile);
	$wat=$GLOBALS['func'][$wat_mime]($waterfile);
	//从数组中获取原图和水印的宽高
	list($src_w,$src_h)=getimagesize($srcfile);
	list($wat_w,$wat_h)=getimagesize($waterfile);
	//水印位置
	switch($position){
		case 1:  //坐上
		   $src_x=$src_y=0;
		   break;
		case 2: //右上
		   $src_x=$src_w-$wat_w;
		   $src_y=0;
		   break;
		case 3: //中间
		   $src_x=($src_w-$wat_w)/2;
		   $src_y=($src_h-$wat_h)/2;
		   break;
		case 4: //坐下
		   $src_x=0;
		   $src_y=$src_h-$wat_h;
		   break;
		case 5: //右下
		   $src_x=$src_w-$wat_w;
		   $src_y=$src_h-$wat_h;
		   break;
	}
	//生成水印并返回结果
	imagecopymerge($src, $wat, $src_x, $src_y, 0, 0, $wat_w, $wat_h, $pct);
	return $src;
 }
?>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60

示例

<?php
  include_once './watermark.php';
  $srcfile='../image/abcd.jpg';  //原图
  $waterfile='../image/wunsun-logo.png';  //水印图片
  $mime=getimagesize($srcfile)['mime'];   //获取原图MIME类型 
  $wat=watermark($srcfile, $waterfile,50,5);  //生成带有水印的图片
  header("Content-Type:$mime");   //指定新图片的MIME类型
  $func[$mime]($srcfile,$wat);    //输出新图片
?>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

原图:
在这里插入图片描述
水印图片:
在这里插入图片描述
最终图片:
在这里插入图片描述
效果好些有点差

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/326019
推荐阅读