PHP经典的给图片加水印程序
如果对PHP的GD库比较熟悉,看懂这篇文章一点都不难了!
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Untitled</title>
</head>
<body>
<?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="http://www.xplore.cn/"; //水印字符串
$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 "<img src=\"".$destination."\" width=".($image_size[0]*$imgpreviewsize)." height=".($image_size[1]*$imgpreviewsize);
echo " alt=\"图片预览:\r文件名:".$destination."\r上传时间:\">";
}
}
?>
</body>
</html>
最后我觉得有必要说一下给图片加水印的原理:
取得上传的文件信息,建立一个真彩色图象,分配颜色方案并且填充图像。
通过判断文件类型建立图形,然后把其复制到原建立的图形上,填充并建立rectangle,以备写入imagestring()或是原已经定好的图像
程序当中判断水印类型:一是字符串,另是增加一个图形对象在上面。
分享到:
相关推荐
简洁的图片(可加水印)上传程序 可与任何系统进行整合
水印位置可自定义,左中右,上中下可自己组合,水印图片应小于源图片
首先让我们来了解PHP图片加水印的原理。 通过判断文件类型建立图形,然后把其复制到原建立的图形上,填充并建立rectangle,以备写入imagestring()或是在原已经定好的图像程序当中判断水印类型:一是字符串,另是增加...
PHP100视频教程35:PHP5文字图片混合水印与缩略图 PHP100视频教程36:PHP中正则表达式学习及应用(一) PHP100视频教程37:PHP中正则表达式学习及应用(二) PHP100视频教程38:PHP中正则表达式学习及应用(三) ...
加上for循环语句,可以实现批量给图片加文字。 关于ImageMagick,是一款免费的命令行图像处理软件,支持windows,linux,Mac OS多平台,下载(https://imagemagick.org/script/download.php)时需要找到适合自己操作...
上传图片,包括了对水印和缩略图的处理! 参数说明: $max_file_size : 上传文件大小限制, 单位BYTE $destination_folder : 上传文件路径 $watermark : 是否附加水印(1为加水印,其他为不加水印);
可以无缝地与 Java、.NET、PHP、ASP 等程序集成,比较适合在 CMS、商城、论坛、博客、Wiki、电子邮件等互联网应用上使用。 主要特点: 快速:体积小,加载速度快 开源:开放源代码,高水平,高品质 底层:内置自定义...
09-11-24 更新:改正了编辑时重复加水印的问题。 注意,本插件是GBK插件。是用于显示简体中文显示。其它编码或语言需要字体支持! 不是simsun.ttc请不要改名为simsun.ttc上传!请修改插件程序里的simsun.ttc为...
35:PHP5文字图片混合水印与缩略图 36:PHP中正则表达式学习及应用(一) 37:PHP中正则表达式学习及应用(二) 38:PHP中正则表达式学习及应用(三) 39:PHP中正则表达式学习及应用(四) 40:PHP中开发自己的-UBB...
贤诚建站系统是一套用PHP mysql架构的免费开源文章管理系统程序。 主要功能简介: 1、自带PC端和手机端...7、自定义上传图片是否加水印; 8、可指定文章分类或者文章专用模板; 9、远程批量下载图片文件到网站;
v5.1更新日志修正其他浏览器图片水印问题2012-09-27 修正内页图片XX2012-07-08 增加内容过滤功能,本地图片加水印,修复一些Bug vivi绝色美图小偷 功能简介:1.采用php小偷技术自动同步更新.2.程序采用伪静态,全站...
微信小程序云工具箱,支持去水印、精选壁纸、图片压缩、文字生成二维码、图片加水印、模拟来电、手持弹幕和掷骰子等多种实用小工具。该小程序提供了几十个功能,方便用户快速处理各种需求。
7.自动给上传及本地化图片添加水印 8.自动提取首张图片为缩略图 9.自动生成任意大小缩略图 10.幻灯片模式图片展示页 11.支持静态缓存,全站生成HTML 12.内置采集器,迅速从网络抓取图文 13.自由分类,自动生成...
6.3.3 给图片添加水印 6.4 本章小结 第7章 PHP操作XML 7.1 使用XML的原因 7.1.1 结构和显示的混合 7.1.2 各种浏览器的差异 7.1.3 不适合做Web显示以外的其他用途 7.1.4 HTML在数据处理中不实用 7.2 XML的基础知识 ...
图像处理例如“验证码”“图片水印”.imagick module version 3.1.0RC2;ImageMagick version ImageMagick 6.6.0-4; +php缓存器.缓存加速;XCache v3.0.1;XCache Cacher v3.0.1; +让PHP支持memcache扩展...
现在我们可以用PHPThumb类库来处理图片,包括,图片尺寸调整,图片截取,图片加水印,图片旋转等等功能。 使用演示:复制代码 代码如下://加载类库文件require_once ‘path/to/ThumbLib.inc.php’; //实例化类库,...
onlineps在线处理图片一个在线处理图片的应用程序。 主要功能包括: •图像加边框 •改变尺寸 •垂直翻转 •水平翻转 •图像凸边 •图像凹边 •图像锐化 •图像单色 •图像着色 •图像马赛克 •图像...
贤诚建站系统是一套用PHP+mysql架构的免费开源文章管理系统程序。主要功能简介:1、自带...7、自定义上传图片是否加水印;8、可指定文章分类或者文章专用模板;9、远程批量下载图片文件到网站;10、网站附件批量管理。