PHP 给图片添加水印logo图片
亲测有用 ,直接上代码
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 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | <?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); |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?