PHP给图片加水印具体实现

给图片加水印实现方法如下:

  1 class Mark
  2 {
  3     public function __construct()
  4     {
  5
  6     }
  7
  8 /**
  9  * 加水印
 10  * @param  file     $srcImg   要加水印的图片
 11  * @param  file     $waterImg 水印图片
 12  * @param  integer  $position 水印图片放置位置  1:左上,2:右上,3:居中,4:左下,5:右下
 13  * @param  integer  $alpha    水印图片透明度   0-100
 14  * @return resource           返回加水印后的图像资源
 15  */
 16     public function waterMark($srcImg, $waterImg, $position=5, $alpha)
 17     {
 18         /**
 19          * 获取原图及水印图的宽高值(px)
 20          * @var [type]
 21          */
 22         $srcImgInfo = @getimagesize($srcImg);
 23         if(!$srcImgInfo) return FALSE;
 24         $srcW = $srcImgInfo[0];
 25         $srcH = $srcImgInfo[1];
 26
 27         $waterInfo = @getimagesize($waterImg);
 28         if (!$waterInfo)return FALSE;//水印图片不存在或路径错误
 29         $waterW = $waterInfo[0];//宽度
 30         $waterH = $waterInfo[1];//高度
 31
 32
 33         /**
 34          * 生成图像资源
 35          * @var [type]
 36          */
 37         $srcImgObj = $this->imageCreateFromExt($srcImg);
 38         if (!$srcImgObj) return FALSE;
 39
 40         $waterImgObj = $this->imageCreateFromExt($waterImg);
 41         if (!$waterImgObj) return FALSE;
 42         //计算水印的位置
 43         switch ($position)
 44         {
 45         //1顶部居左
 46         case 1:
 47             $srcX = $srcY = 0;
 48             break;
 49         //2顶部居右
 50         case 2:
 51             $srcX = $srcW - $waterW;
 52             $srcY = 0;
 53             break;
 54         //3居中
 55         case 3:
 56             $srcX = ($srcW -$waterW)/2;
 57             $srcY = ($srcH -$waterH)/2;
 58             break;
 59         //4底部居左
 60         case 4:
 61             $srcX = 0;
 62             $srcY = $srcH -$waterH;
 63             break;
 64         //5底部居右
 65         case 5:
 66             $srcX = $srcW - $waterW;
 67             $srcY = $srcH - $waterH;
 68             break;
 69         default:
 70             $srcX = $srcY = 0;
 71         }
 72         //合并原图和水印图片
 73         imagecopymerge($srcImgObj, $waterImgObj, $srcX, $srcY, 0, 0, $waterW, $waterH, $alpha);
 74         imagedestroy($waterImgObj);//关闭水印图像资源
 75         //返回合并后的图像资源,外部得到图像资源后可直接输出到浏览器也可保存成图片文件
 76         return $srcImgObj;
 77         }
 78
 79     /**
 80     * 根据提供的原图格式创建新图像资源
 81     * @param file $imgfile
 82     * @return Ambigous <NULL, resource>
 83     */
 84     private function imageCreateFromExt($imgfile)
 85     {
 86         //获取图片的格式;格式:1、gif,2、jpg,3、png
 87         $imageType = getimagesize($imgfile)[2];
 88         $im = null;
 89         switch ($imageType) {
 90         case 1:
 91             $im = imagecreatefromgif($imgfile);
 92             break;
 93         case 2:
 94             $im = imagecreatefromjpeg($imgfile);
 95             break;
 96         case 3:
 97             $im = imagecreatefrompng($imgfile);
 98             break;
 99         default:
100             $im = imagecreatefrompng($imgfile);
101         }
102         return $im;
103     }
104 }

PHP给图片加水印具体实现

时间: 2024-12-25 09:12:08

PHP给图片加水印具体实现的相关文章

thinkphp 3.2.3整合ueditor 1.4,给上传的图片加水印

今天分享一下thinkphp 3.2.3整合ueditor 1.4,给上传的图片加水印.博主是新手,在这里卡住了很久(>_<) thinkphp 3.2.3整合ueditor 1.4 下载地址:https://github.com/Nintendov/Ueditor-thinkphp 下载下来,看着配置就可以了. 下面就是给上传图片加水印: (在做这步前,请确保ueditor已经正常工作) 我的工程目录如下: fonts里面的fz.fft为水印字体 images里面的logo.png为水印图片

java 图片加水印,设置透明度。说明很详细

package com.yidao.common; import java.awt.AlphaComposite; import java.awt.Graphics2D; import java.awt.Image; import java.awt.RenderingHints; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import java.io.Out

文件上传,图片加水印

文件上传: 所用控件:FileUpload 使用时的思路: 1.判断用户是否选中了文件 FileUpload.FileName获取选中的文件名,判断长度,如果长度大于零就代表已经选择了文件 JS端:通过ID获取控件,然后控件的value获取选中的文件名 2.将文件保存到服务器上 FileUpload.SaveAs("绝对路径"); 3.获得绝对路径 先编写相对路径:比如"UpLoads/abc.txt" 再把路径映射成绝对路径:Server.MapPath(&quo

利用PHP为图片加水印

1.为图片加风格字体 <?php header('Content-type:image/jpeg');//告诉服务器用JPEG图像格式输出 $img=imagecreatefromjpeg('images/girl.jpg');//建立背景图像 $color=imagecolorallocate($img,100,100,100);//分配给字体的颜色 $width=imagesx($img);//输出背景图像的总宽度 $height=imagesy($img);//输出背景图像的总长度 $po

iOS图片加水印效果的实现并保存至相冊

图片加水印效果的实现并保存至相冊 实现效果如图: project下载:githubproject下载链接 代码: - (void)viewDidLoad { [super viewDidLoad]; UIImage *image = [UIImage imageNamed:@"pushu.jpg"]; UIImage *waterImage = [self waterMarkImage:image withText:@"朴树水印測试"]; UIImageWriteT

java 图片加水印,设置透明度。说明非常具体

package com.yidao.common; import java.awt.AlphaComposite; import java.awt.Graphics2D; import java.awt.Image; import java.awt.RenderingHints; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import java.io.Out

图片加水印 图片验证码

图片加水印 1   获取这张图片 System.Drawing.Image img = System.Drawing.Image.FromStream(FileUpload1.FileContent); 2 给图片加水印 Graphics g = Graphics.FromImage(img); string s = "WWW.ITNBA.COM";         s 给图片加的水印文字 Font f = new Font("微软雅黑", 30); Brush b

给图片加水印

public void DoAddMark(object ParameterInfo) { #region 拆分参数 List<object> listParameter = (List<object>)ParameterInfo; ConnParameter connpar = (ConnParameter)listParameter[0]; //连接数据库参数 string[] strImgPath = (string[])listParameter[1]; //图片源路径 s

php 给图片加水印

昨天下午同事问我一个php的问题,就是给图片加水印,php我也一知半解,网上资料找了一通,自己就写了一个加水印的php类. 具体代码如下: 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