PHP实例————制作水印图片

目前QQ空间和新浪微博等社交软件中,分享的图片大多都是添加水印的。添加水印之后的照片也就变得独一无二了,好像就是添加了一个专属的个人签名。可以很好的防止别人盗用你的照片,也能够让别人一看水印就能在上面得到一些关于照片的信息。今天写了一个给图片添加水印的函数,和大家分享一下。有了这个函数,给照片添加水印就显的方便多了。其实原理很简单,原图是一张图片,水印其实也是一张图片,只不过有的水印是白色或透明色背景,然后两张图片进行合成,就成了水印图片。

1.制作水印图片所需php函数

(1)getimagesize();

(2)imagecreatefromgif();imagecreatefromjpeg();imagecreatefrompng;

(3)imagecogy();

(4)imagegif();imagejpeg();imagepng();

具体函数如何使用,我就不细讲了,大家可以参考php参考手册

2.代码分享

<?php
function watermark($maxfile,$minfile){

	//获取大小图信息
	$maxarr=getimagesize($maxfile);
	$minarr=getimagesize($minfile);

	$max_width=$maxarr[0];
	$max_height=$maxarr[1];
	$max_format=$maxarr[2];
	$max_mime=$maxarr['mime'];

	$min_width=$minarr[0];
	$min_height=$minarr[1];
	$min_format=$minarr[2];
	//$min_mime=$minarr['mime'];

        //判断大小图格式
	switch($max_format){
		case 1:
			$max_createimg="imagecreatefromgif";
			$max_outimg="imagegif";
			break;
		case 2:
			$max_createimg="imagecreatefromjpeg";
			$max_outimg="imagejpeg";
			break;
		case 3:
			$max_createimg="imagecreatefrompng";
			$max_outimg="imagepng";
			break;
	}
	switch($min_format){
		case 1:
			$min_createimg="imagecreatefromgif";
			break;
		case 2:
			$min_createimg="imagecreatefromjpeg";
			break;
		case 3:
			$min_createimg="imagecreatefrompng";
			break;
	}
	//创建大小图资源
	$maxim=$max_createimg($maxfile);
	$minim=$min_createimg($minfile);

	//两张图的尺寸差
	$D_value_x=$max_width-$min_width;
	$D_value_y=$max_height-$min_height;

	//添加水印
	imagecopy($maxim,$minim,$D_value_x,$D_value_y,0,0,$min_width,$min_height);

	//保存水印图片
	header("content-type:{$max_mime}");

	$max_outimg($maxim,"watermark.jpg");
}
watermark("picture/apple.jpg","picture/copypic.jpg");
?>

3.说几点代码中可能不太好理解的地方

(1)因为不同格式的图片所需要的函数后缀是不一样的,所以必须在使用函数创建资源和保存水印图片前进行判断图片格式。

(2)计算两个图片的尺寸差,是为了将小图很好的添加到大图的右下角(大多水印都是添加到右下角的吧)。

4.整体可以优化的地方

(1)两个switch总觉得有点多了。如果放到if语句或者for循环中,肯定能整合一下。好饿,所以以后在优化这个问题(明显是给自己找借口)。

(2)我用的水印直接是另一张尺寸较小的图片。然而实际的水印大多是一行字,一个网址,一个时间等。可以用做制作验证码的方法,制作水印。然后将水印所需要的文字作为函数的参数,就可以在一张图片中添加自己想要的水印,同时水印的生成也不需要去找图片,完全自动生成。

时间: 2024-10-30 02:31:52

PHP实例————制作水印图片的相关文章

C#(.net)水印图片的生成

/* * *    使用说明: * 建议先定义一个WaterImage实例 * 然后利用实例的属性,去匹配需要进行操作的参数 * 然后定义一个WaterImageManage实例 * 利用WaterImageManage实例进行DrawImage(),印图片水印 * DrawWords()印文字水印 * -*/ using System; using System.Drawing; using System.Drawing.Imaging; using System.Drawing.Drawin

如何在线制作gif图片?

最近想做个gif在线制作的网站,所以研究下了imagemagick和graphicsmagick制作gif图片 站已经做出来了:有兴趣的朋友可以先看看 http://www.sosogif.com/make_online.jsp 源码下载地址1:http://www.quzhuanpan.com/home/sourceList.jsp?type=6 源码下载地址2:http://www.quzhuanpan.com/download/checkResult.action?id=30&type=6

ASP.NET图片上传,加水印文字和水印图片!

看了清清月儿的这篇文章让自己受益匪浅,但是觉得还有一些问题.上传图片后还有原来的图片文件存在,觉得这样很不爽,调用file类的delete方法删除原来没有生成水印的图片另外自己又加了一个限制图片大小的函数 1.最简单的单文件上传(没花头) 效果图:说明:这是最基本的文件上传,在asp.net1.x中没有这个FileUpload控件,只有html的上传控件,那时候要把html控件转化为服务器控件,很不好用.其实所有文件上传的美丽效果都是从这个FileUpload控件衍生,第一个例子虽然简单却是根本

图片处理类(图片水印 图片缩放)

本图片处理类功能非常之强大可以实现几乎所有WEB开发中对图像的处理功能都集成了,包括有缩放图像.切割图像.图像类型转换.彩色转黑白.文字水印.图片水印等功能 1 import java.awt.AlphaComposite; 2 import java.awt.Color; 3 import java.awt.Font; 4 import java.awt.Graphics; 5 import java.awt.Graphics2D; 6 import java.awt.Image; 7 imp

java对pdf添加清晰的水印图片,需要第三包jar包:itextpdf-5.1.3.jar

import java.io.File;import java.io.FileOutputStream;import com.itextpdf.text.Image;import com.itextpdf.text.pdf.PdfArray;import com.itextpdf.text.pdf.PdfContentByte;import com.itextpdf.text.pdf.PdfDictionary;import com.itextpdf.text.pdf.PdfName;impor

免费制作gif图片工具

怎样制作gif图片在你的blog里面呢? 今天给大家推荐一款免费的gif制作软件:GifCam 上面用到的下载地址: http://downloads.tomsguide.com/GifCam,0301-52843.html 希望对大家有用. ======================================================== More reading,and english is important. I'm Hongten E | [email protected

android:制作 Nine-Patch 图片

它是一种被特殊处理过的 png 图片,能够指定哪些区域可以被拉伸而 哪些区域不可以. 那么 Nine-Patch 图片到底有什么实际作用呢?我们还是通过一个例子来看一下吧.比如 说项目中有一张气泡样式的图片 message_left.png,如图 3.38 所示. 图   3.38 我们将这张图片设置为一个 LinearLayout 的背景图片,修改 activity_main.xml 中的代码, 如下所示: <RelativeLayout xmlns:android="http://sc

图片操作,图片上放个水印图片

知识点: 1.先创建一个Image,再创建一个水印图片Image,再创建画布Graphic 问题: 图片上放置一个水印图片 解决方案 1 <%@ WebHandler Language="C#" Class="ShuiYin" %> 2 3 using System; 4 using System.Web; 5 using System.Drawing; 6 7 public class ShuiYin : IHttpHandler { 8 9 publ

PHP实现水印图片

php实现简单的文字水印图片,使用前需要开启php配置中的gd2功能 <?php/*打开图片*/ //1.配置图片路径 $src="image/55.jpg";//这个路径改为自己的实际路径就好 //2.获取图片信息 $info=getimagesize($src); //3.通过图片编号获取图片图像类型 $type=image_type_to_extension($info[2],false); //4.在内存中创建一个和我们的图像类型一样的图像 $fun="imag