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

2015-01-24信息快讯网

PHP图片加水印的实现代码编写起来比较复杂,不过对于经验丰富的老手来说还是比较轻松的。下面我们就以一段代码示例来分析一下PHP图片加水印的原理。

一个正规的网站,在需要上传图片时,往往都会需要在图片上增加自己网站的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. http://www.jb51.net/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 错误处理经验分享
php购物车实现代码
使用PHP实现密保卡功能实现代码&lt;打包下载直接运行&gt;
PHP实现时间轴函数代码
php利用iframe实现无刷新文件上传功能的代码
抓取并下载CSS中所有图片文件的php代码
PHP无刷新上传文件实现代码
PHP通过正则表达式下载图片到本地的实现代码
PHP 图片上传代码
php图片上传存储源码并且可以预览
php中将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串
php 文件上传类代码
php图片处理:加水印、缩略图的实现(自定义函数:watermark、thumbnail)
超级好用的一个php上传图片类(随机名,缩略图,加水印)
php gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码
php echo 输出字符串函数详解
php access 数据连接与读取保存编辑数据的实现代码
简单PHP上传图片、删除图片实现代码
php 删除记录同时删除图片文件的实现代码
AMFPHP php远程调用(RPC, Remote Procedure Call)工具 快速入门教程
PHP chmod 函数与批量修改文件目录权限
PHP 图片上传实现代码 带详细注释
PHP 文件上传全攻略
php 上传功能实例代码
PHP 一个比较完善的简单文件上传
PHP 抓取网页图片并且另存为的实现代码
PHP提取数据库内容中的图片地址并循环输出
php下图片文字混合水印与缩略图实现代码
php 方便水印和缩略图的图形类
用来给图片加水印的PHP类
PHP经典的给图片加水印程序
©2014-2024 dbsqp.com