php 图片加水印与上传图片加水印php类


Posted in PHP onMay 12, 2010

一个正规的网站,在需要上传图片时,往往都会需要在图片上增加自己网站的LOGO水印。那么如何实现这一步骤呢?首先让我们来了解PHP图片加水印的原理。
通过判断文件类型建立图形,然后把其复制到原建立的图形上,填充并建立rectangle,以备写入imagestring()或是在原已经定好的图像程序当中判断水印类型:一是字符串,另是增加一个图形对象在上面。以下是PHP图片加水印的转载!

参数说明:

$max_file_size : 上传文件大小限制, 单位BYTE
$destination_folder : 上传文件路径
$watermark : 是否附加水印(1为加水印,其他为不加水印);

PHP图片加水印使用说明:
1. 将PHP.INI文件里面的"extension=php_gd2.dll"一行前面的;号去掉,因为我们要用到GD库;
2. 将extension_dir =改为你的php_gd2.dll所在目录;
3. https://3water.com/list/list_15_1.htm
PHP图片加水印的代码示例:

//上传文件类型列表 
$uptypes=array( 
'image/jpg', 
'image/jpeg', 
'image/png', 
'image/pjpeg', 
'image/gif', 
'image/bmp', 
'image/x-png' 
); 
$max_file_size=2000000; //上传文件大小限制, 单位BYTE 
$destination_folder="uploadimg/"; //上传文件路径 
$watermark=1; //是否附加水印(1为加水印,其他为不加水印); 
$watertype=1; //水印类型(1为文字,2为图片) 
$waterposition=1; //水印位置(1为左下角,2为右下角 
,3为左上角,4为右上角,5为居中); 
$waterstring="<A href="http://www.xplore.cn/"> 
http://www.xplore.cn/</A>"; //水印字符串 
$waterimg="xplore.gif"; //水印图片 
$imgpreview=1; //是否生成预览图(1为生成,其他为不生成); 
$imgpreviewsize=1/2; //缩略图比例 
?> 
<html> 
<head> 
<title>ZwelL图片上传程序</title> 
<style type="text/css"> 
<!-- 
body 
{ 
font-size: 9pt; 
} 
input 
{ 
background-color: #66CCFF; 
border: 1px inset #CCCCCC; 
} 
--> 
</style> 
</head> 
<body> 
<form enctype="multipart/form-data" 
method="post" name="upform"> 
上传文件: 
<input name="upfile" type="file"> 
<input type="submit" value="上传"><br> 
允许上传的文件类型为:<?=implode(', ',$uptypes)?> 
</form> 
<?php 
if ($_SERVER['REQUEST_METHOD'] == 'POST') 
{ 
if (!is_uploaded_file($_FILES["upfile"] 
[tmp_name])) 
//是否存在文件 
{ 
echo "图片不存在!"; 
exit; 
} 
$file = $_FILES["upfile"]; 
if($max_file_size <$file["size"]) 
//检查文件大小 
{ 
echo "文件太大!"; 
exit; 
} 
if(!in_array($file["type"], $uptypes)) 
//检查文件类型 
{ 
echo "文件类型不符!".$file["type"]; 
exit; 
} 
if(!file_exists($destination_folder)) 
{ 
mkdir($destination_folder); 
} 
$filename=$file["tmp_name"]; 
$image_size = getimagesize($filename); 
$pinfo=pathinfo($file["name"]); 
$ftype=$pinfo['extension']; 
$destination = $destination_folder. 
time().".".$ftype; 
if (file_exists($destination) && 
$overwrite != true) 
{ 
echo "同名文件已经存在了"; 
exit; 
} 
if(!move_uploaded_file ($filename, 
$destination)) 
{ 
echo "移动文件出错"; 
exit; 
} 
$pinfo=pathinfo($destination); 
$fname=$pinfo[basename]; 
echo " <font color=red>已经成功上传 
</font><br>文件名: 
<font color=blue>".$destination_folder. 
$fname."</font><br>"; 
echo " 宽度:".$image_size[0]; 
echo " 长度:".$image_size[1]; 
echo "<br> 大小:".$file["size"]." bytes"; 
if($watermark==1) 
{ 
$iinfo=getimagesize($destination,$iinfo); 
$nimage=imagecreatetruecolor($image_size[0] 
,$image_size[1]); 
$white=imagecolorallocate($nimage,255,255,255); 
$black=imagecolorallocate($nimage,0,0,0); 
$red=imagecolorallocate($nimage,255,0,0); 
imagefill($nimage,0,0,$white); 
switch ($iinfo[2]) 
{ 
case 1: 
$simage =imagecreatefromgif($destination); 
break; 
case 2: 
$simage =imagecreatefromjpeg($destination); 
break; 
case 3: 
$simage =imagecreatefrompng($destination); 
break; 
case 6: 
$simage =imagecreatefromwbmp($destination); 
break; 
default: 
die("不支持的文件类型"); 
exit; 
} 
imagecopy($nimage,$simage,0,0,0,0, 
$image_size[0],$image_size[1]); 
imagefilledrectangle($nimage,1, 
$image_size[1]-15,80,$image_size[1],$white); 
switch($watertype) 
{ 
case 1: //加水印字符串 
imagestring($nimage,2,3,$image_size[1]-15, 
$waterstring,$black); 
break; 
case 2: //加水印图片 
$simage1 =imagecreatefromgif("xplore.gif"); 
imagecopy($nimage,$simage1,0,0,0,0,85,15); 
imagedestroy($simage1); 
break; 
} 
switch ($iinfo[2]) 
{ 
case 1: 
//imagegif($nimage, $destination); 
imagejpeg($nimage, $destination); 
break; 
case 2: 
imagejpeg($nimage, $destination); 
break; 
case 3: 
imagepng($nimage, $destination); 
break; 
case 6: 
imagewbmp($nimage, $destination); 
//imagejpeg($nimage, $destination); 
break; 
} 
//覆盖原上传文件 
imagedestroy($nimage); 
imagedestroy($simage); 
} 
if($imgpreview==1) 
{ 
echo "<br>图片预览:<br>"; 
echo "<ccid_file values="\" width=". 
($image_size[0]*$imgpreviewsize)." 
height=".($image_size[1]*$imgpreviewsize);" 
echo " alt=\"图片预览:\r文件名:". 
$destination."\r上传时间:\" />"; 
} 
} 
?> 
</body> 
</html>

大家也可以参考 图片加水印的PHP类

PHP 相关文章推荐
PHP 和 MySQL 基础教程(四)
Oct 09 PHP
在字符串中把网址改成超级链接
Oct 09 PHP
php下判断数组中是否存在相同的值array_unique
Mar 25 PHP
PHP 文件上传全攻略
Apr 28 PHP
三个类概括PHP的五种设计模式
Sep 05 PHP
php数组去重的函数代码
Feb 03 PHP
php的ajax简单实例
Feb 27 PHP
PHP源码分析之变量的存储过程分解
Jul 03 PHP
php实现通用的信用卡验证类
Mar 24 PHP
PHP实现防盗链的方法分析
Jul 25 PHP
PHP添加文字水印或图片水印的水印类完整源代码与使用示例
Mar 18 PHP
ThinkPHP框架整合微信支付之刷卡模式图文详解
Apr 10 PHP
php access 数据连接与读取保存编辑数据的实现代码
May 12 #PHP
简单PHP上传图片、删除图片实现代码
May 12 #PHP
php 删除记录同时删除图片文件的实现代码
May 12 #PHP
Godaddy空间Zend Optimizer升级方法
May 10 #PHP
AMFPHP php远程调用(RPC, Remote Procedure Call)工具 快速入门教程
May 10 #PHP
PHP chmod 函数与批量修改文件目录权限
May 10 #PHP
php file_exists 检查文件或目录是否存在的函数
May 10 #PHP
You might like
解析PHP高效率写法(详解原因)
2013/06/20 PHP
PHP5.3以上版本安装ZendOptimizer扩展
2015/03/27 PHP
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
PHP实现统计代码行数小工具
2019/09/19 PHP
多广告投放代码 推荐
2006/11/13 Javascript
JavaScript Memoization 让函数也有记忆功能
2011/10/27 Javascript
JavaScript中数组对象的那些自带方法介绍
2013/03/12 Javascript
node.js中实现同步操作的3种实现方法
2014/12/05 Javascript
js实现网页图片延时加载 提升网页打开速度
2016/01/26 Javascript
AngularJS 依赖注入详解和简单实例
2016/07/28 Javascript
简单实现jQuery轮播效果
2017/08/18 jQuery
JavaScript中this关键字用法实例分析
2018/08/24 Javascript
JS秒杀倒计时功能完整实例【使用jQuery3.1.1】
2019/09/03 jQuery
vue实现简单图片上传
2020/06/30 Javascript
Openlayers实现地图全屏显示
2020/09/28 Javascript
python私有属性和方法实例分析
2015/01/15 Python
python matplotlib 注释文本箭头简单代码示例
2018/01/08 Python
Python实现一个服务器监听多个客户端请求
2018/04/12 Python
Python3实现转换Image图片格式
2018/06/21 Python
总结Python图形用户界面和游戏开发知识点
2019/05/22 Python
python实现在cmd窗口显示彩色文字
2019/06/24 Python
python中将两组数据放在一起按照某一固定顺序shuffle的实例
2019/07/15 Python
keras读取训练好的模型参数并把参数赋值给其它模型详解
2020/06/15 Python
Python matplotlib读取excel数据并用for循环画多个子图subplot操作
2020/07/14 Python
python 实现朴素贝叶斯算法的示例
2020/09/30 Python
python3访问字典里的值实例方法
2020/11/18 Python
用python制作个视频下载器
2021/02/01 Python
CSS3悬停效果案例应用
2012/11/21 HTML / CSS
英国工具中心:UK Tool Centre
2017/07/10 全球购物
牵手50新加坡:专为黄金岁月的单身人士而设的交友网站
2020/08/16 全球购物
初二物理教学反思
2014/01/29 职场文书
宿舍保安职务说明书
2014/02/25 职场文书
幼儿园清明节活动总结
2014/07/04 职场文书
毕业论文致谢范文
2015/05/14 职场文书
小学体育组工作总结
2015/08/13 职场文书
关于环保的广播稿
2015/12/17 职场文书