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);

  

posted @   79524795  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示