PHP 给图片添加水印logo图片

亲测有用 ,直接上代码

<?php 
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/2/28 0028
 * Time: 下午 4:37
 */
function watermark($source,$water,$postion=4,$path=''){
		 //设置水印图片名称前缀  
		 $waterPrefix=''; //as_  是否替换图片,替换图片则为空 另加图片的话天上

		 //图片类型和对应创建画布资源的函数名
		 $from=array(
		 'image/gif'=>'imagecreatefromgif',
		 'image/png'=>'imagecreatefrompng',
		 'image/jpeg'=>'imagecreatefromjpeg',
		 );
		 //图片类型和对应生成图片的函数名
		 $to=array(
		 'image/gif'=>'imagegif',
		 'image/png'=>'imagepng',
		 'image/jpeg'=>'imagejpeg',
		 );

		 //获取原图和 水印图片信息数组
		 $src_info=getimagesize($source);
		 $water_info=getimagesize($water);
		 //从数组中获取原图和水印图片的宽和高
		 list($src_w,$src_h,$src_mime)=$src_info;
		 list($wat_w,$wat_h,$wat_mime)=$water_info;
		 //获取各图片对应的创建画布函数名
		 $src_create_fname=$from[$src_info['mime']];
		 $wat_create_fname=$from[$water_info['mime']];
		 //使用可变函数来创建画布资源
		 $src_img=$src_create_fname($source);
		 $wat_img=$wat_create_fname($water);

		 //水印位置
		 switch($postion){
				 case 1://左上
				 $src_x=0;
				 $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;
				 default ://右下
				 $src_x=$src_w-$wat_w;
				 $src_y=$src_h-$wat_h;
				 break;
		 }

		 //添加水印
		 /**
		 * @param resource $src_img 原图像资源
		 * @param resource $wat_img 水印图像资源
		 * @param int $src_x 水印图片在原图像中的横坐标
		 * @param int $src_y 水印图片在原图像中的纵坐标
		 * @param int $wat_w 水印图片的宽
		 * @param int $wat_h 水印图片的高
		 */
		 imagecopy($src_img,$wat_img,$src_x,$src_y,0,0,$wat_w,$wat_h);

		  //生成带水印的图片路径
		 // $waterfile=$path.$waterPrefix.$source;  //新的带水印图片路径名称
		  $waterfile=$waterPrefix.$source;  //我这是直接替换


		 //获取输出图片格式的函数名
		 $generate_fname=$to[$src_info['mime']];
		 //判断将添加水印后的图片输出到指定目录是否正确
		 if($generate_fname($src_img,$waterfile)){
					 //有条理地输出原图像与加水印后的图像
					 // echo "<table><tr><th>为图片添加水印</th></tr>";

					 // echo "<tr><td>原图像:</td><td><img src='".$source."'/></td></tr>";

					echo "<tr><td>加水印后:</td><td><img src='".$waterfile."'/></td></tr></table>";

					// var_dump($waterfile);

			}else{

			 echo "输出水印图片到指定目录出错";
			 return false;

			 }

}

//使用变量保存原图片与水印图片路径

$source='php.png';
$water='logo.png';

//调用函数,显示原图与添加水印后的图片
watermark($source,$water,20,30);

  

posted @ 2022-05-05 18:12  79524795  阅读(24)  评论(0编辑  收藏  举报