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

 class Mark
{
public function __construct()
{ } /**
* 加水印
* @param file $srcImg 要加水印的图片
* @param file $waterImg 水印图片
* @param integer $position 水印图片放置位置 1:左上,2:右上,3:居中,4:左下,5:右下
* @param integer $alpha 水印图片透明度 0-100
* @return resource 返回加水印后的图像资源
*/
public function waterMark($srcImg, $waterImg, $position=5, $alpha)
{
/**
* 获取原图及水印图的宽高值(px)
* @var [type]
*/
$srcImgInfo = @getimagesize($srcImg);
if(!$srcImgInfo) return FALSE;
$srcW = $srcImgInfo[0];
$srcH = $srcImgInfo[1]; $waterInfo = @getimagesize($waterImg);
if (!$waterInfo)return FALSE;//水印图片不存在或路径错误
$waterW = $waterInfo[0];//宽度
$waterH = $waterInfo[1];//高度 /**
* 生成图像资源
* @var [type]
*/
$srcImgObj = $this->imageCreateFromExt($srcImg);
if (!$srcImgObj) return FALSE; $waterImgObj = $this->imageCreateFromExt($waterImg);
if (!$waterImgObj) return FALSE;
//计算水印的位置
switch ($position)
{
//1顶部居左
case 1:
$srcX = $srcY = 0;
break;
//2顶部居右
case 2:
$srcX = $srcW - $waterW;
$srcY = 0;
break;
//3居中
case 3:
$srcX = ($srcW -$waterW)/2;
$srcY = ($srcH -$waterH)/2;
break;
//4底部居左
case 4:
$srcX = 0;
$srcY = $srcH -$waterH;
break;
//5底部居右
case 5:
$srcX = $srcW - $waterW;
$srcY = $srcH - $waterH;
break;
default:
$srcX = $srcY = 0;
}
//合并原图和水印图片
imagecopymerge($srcImgObj, $waterImgObj, $srcX, $srcY, 0, 0, $waterW, $waterH, $alpha);
imagedestroy($waterImgObj);//关闭水印图像资源
//返回合并后的图像资源,外部得到图像资源后可直接输出到浏览器也可保存成图片文件
return $srcImgObj;
} /**
* 根据提供的原图格式创建新图像资源
* @param file $imgfile
* @return Ambigous <NULL, resource>
*/
private function imageCreateFromExt($imgfile)
{
//获取图片的格式;格式:1、gif,2、jpg,3、png
$imageType = getimagesize($imgfile)[2];
$im = null;
switch ($imageType) {
case 1:
$im = imagecreatefromgif($imgfile);
break;
case 2:
$im = imagecreatefromjpeg($imgfile);
break;
case 3:
$im = imagecreatefrompng($imgfile);
break;
default:
$im = imagecreatefrompng($imgfile);
}
return $im;
}
}

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

  1. 火车头dede采集接口,图片加水印,远程图片本地化,远程无后缀的无图片本地化

    <?php /* [LocoySpider] (C)2005-2010 Lewell Inc. 火车采集器 DedeCMS 5.7 UTF8 文章发布接口 Update content: 图片加 ...

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

    今天分享一下thinkphp 3.2.3整合ueditor 1.4,给上传的图片加水印.博主是新手,在这里卡住了很久(>_<) thinkphp 3.2.3整合ueditor 1.4 下载 ...

  3. PHPThumb处理图片,生成缩略图,图片尺寸调整,图片截取,图片加水印,图片旋转

    [强烈推荐]下载地址(github.com/masterexploder/PHPThumb). 注意这个类库有一个重名的叫phpThumb,只是大小写的差别,所以查找文档的时候千万注意. 在网站建设过 ...

  4. php 分享两种给图片加水印的方法

    本文章向码农们介绍 php 给图片加水印的两种方法,感兴趣的码农可以参考一下本文章的源代码. 方法一:PHP最简单的加水印方法 <?php // http://www.manongjc.com ...

  5. Java图片处理(二)图片加水印

    图片加水印,是通过图片重叠绘制实现的.实现代码如下: public static void press(String pressImg, String pressText, String target ...

  6. PHP给图片加水印

    <?php /** *图片加水印 *@param $srcImg 原图 *@param $waterImg 水印图片 *@param $savepath 保存路径 *@param $savena ...

  7. 如何用node.js批量给图片加水印

    上一篇我们讲了如何用node.js给图片加水印,但是只是给某一张图片加,并没有涉及到批量处理.这一篇,我们学习如果批量进行图片加水印处理. 一.准备工作: 首先,你要阅读完这篇文章:http://ww ...

  8. 使用 ImageEnView 给图片加水印,及建缩略图

    摘要: 使用 ImageEnView 给图片加水印,及建缩略图 {Power by hzqghost@21cn.com}unit CutWater; interface uses  Math,imag ...

  9. php对图片加水印--将图片先缩小,再在上面加水印

    方法: /**  * 图片加水印(适用于png/jpg/gif格式)  *  * @author flynetcn  *  * @param $srcImg  原图片  * @param $water ...

  10. php对图片加水印--将文字作为水印加到图片

    方法代码: /**  * 图片加水印(适用于png/jpg/gif格式)  *  * @author flynetcn  *  * @param $srcImg  原图片  * @param $wat ...

随机推荐

  1. Maatkit--Mysql的高级管理工具

    Maatkit是不错的mysql管理工具,已经成为Percona的一部分.包含以下主要工具: 1.mk-table-checksum 检查主从表是否一致的有效工具 2.mk-table-sync 有效 ...

  2. lnmp git ruby sass 安装

    1 cd .. 2 ls 3 cd mzx/ 4 ls 5 cd 桌面 6 cd lnmp1.4-full/ //到lnmp 的官网上下载后,根据官网的提示来安装lump 7 ls 8 install ...

  3. 链表系列 - [LeetCode] 链表的交错重排L1,Ln,L2,Ln-1 ....

    其实一开始并没有想到时间上O(n)的方法,想到了也是空间复杂度是O(n)的(需要用到栈或者递归):链表分两段,用栈记录第一段的遍历过程. 后来经提示想到了,可以将第二段链表逆序.从而不需要额外的辅助空 ...

  4. 温习js中对象的继承

    温故而知新 XD 1. 关于原型和构造函数的几个知识要点: 使用new 操作符调用构造函数,会经历以下四个步骤: 1.1. 创建一个新对象: 1.2. 将构造函数的作用域赋给新对象(因此 this 就 ...

  5. maven插件理解

    maven插件的主要功能是对用到的jar包进行管理,jar包先从本地仓库中获取,如果没有找到,则从远处中央仓库下载(需要联外网).本地仓库中的jar包可供所有maven工程使用,属于公共模块. mav ...

  6. [LeetCode] 8. String to Integer (atoi) ☆

    Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input cases. ...

  7. 怎么修改jar包中的class文件然后再重新打成jar包

    1.导入到eclipse中, 修改完了 然后导出jar即可 2.jar cf file.jar *.class 将当前目录下所有CLASS文件打包成新的JAR文件 3.对于补丁.之前已经有jar 例如 ...

  8. [SDOI2008]仪仗队 (洛谷P2158)

    洛谷题目链接:[SDOI2008]仪仗队 题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视 ...

  9. Linux修改服务器ip

    Linux基础二(修改ip地址.修改网关.修改DNS服务器.重新启动网络配置)   网络的初始化 .ip地址的修改(临时生效) 使用ifconfig命令 ifconfig 网卡名 ip地址 netma ...

  10. jquery字符串序列化方法总结

    在jquery中字符串序列化方法包括有param() .serialize() .serializeArray(),在这里对其常用做法进行总结. $.param()方法这是serialize()方法的 ...