`
javaeyeren
  • 浏览: 124427 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

PHP经典的给图片加水印程序

阅读更多

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图片加水印类并附有测试程序

    水印位置可自定义,左中右,上中下可自己组合,水印图片应小于源图片

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

    首先让我们来了解PHP图片加水印的原理。 通过判断文件类型建立图形,然后把其复制到原建立的图形上,填充并建立rectangle,以备写入imagestring()或是在原已经定好的图像程序当中判断水印类型:一是字符串,另是增加...

    PHP100视频教程全集112集BT种子【PHP经典】

    PHP100视频教程35:PHP5文字图片混合水印与缩略图 PHP100视频教程36:PHP中正则表达式学习及应用(一) PHP100视频教程37:PHP中正则表达式学习及应用(二) PHP100视频教程38:PHP中正则表达式学习及应用(三) ...

    imageMagick给图片加字,windows批处理

    加上for循环语句,可以实现批量给图片加文字。 关于ImageMagick,是一款免费的命令行图像处理软件,支持windows,linux,Mac OS多平台,下载(https://imagemagick.org/script/download.php)时需要找到适合自己操作...

    上传图片程序(php文件)

    上传图片,包括了对水印和缩略图的处理! 参数说明: $max_file_size : 上传文件大小限制, 单位BYTE $destination_folder : 上传文件路径 $watermark : 是否附加水印(1为加水印,其他为不加水印);

    Kindeditor编辑器添加图片上传水印功能(php代码)

    可以无缝地与 Java、.NET、PHP、ASP 等程序集成,比较适合在 CMS、商城、论坛、博客、Wiki、电子邮件等互联网应用上使用。 主要特点: 快速:体积小,加载速度快 开源:开放源代码,高水平,高品质 底层:内置自定义...

    仿铁血图片底部无损原图版权水印插件 for Discuz!7.1/ 7.2 GBK.rar

    09-11-24 更新:改正了编辑时重复加水印的问题。 注意,本插件是GBK插件。是用于显示简体中文显示。其它编码或语言需要字体支持! 不是simsun.ttc请不要改名为simsun.ttc上传!请修改插件程序里的simsun.ttc为...

    php课程(共100多节)

    35:PHP5文字图片混合水印与缩略图 36:PHP中正则表达式学习及应用(一) 37:PHP中正则表达式学习及应用(二) 38:PHP中正则表达式学习及应用(三) 39:PHP中正则表达式学习及应用(四) 40:PHP中开发自己的-UBB...

    贤诚建站系统(开源文章管理系统)php版v4.0

    贤诚建站系统是一套用PHP mysql架构的免费开源文章管理系统程序。 主要功能简介: 1、自带PC端和手机端...7、自定义上传图片是否加水印; 8、可指定文章分类或者文章专用模板; 9、远程批量下载图片文件到网站;

    绝色美图小偷 v5.1

    v5.1更新日志修正其他浏览器图片水印问题2012-09-27 修正内页图片XX2012-07-08 增加内容过滤功能,本地图片加水印,修复一些Bug vivi绝色美图小偷 功能简介:1.采用php小偷技术自动同步更新.2.程序采用伪静态,全站...

    微信小程序云工具箱开源源码

    微信小程序云工具箱,支持去水印、精选壁纸、图片压缩、文字生成二维码、图片加水印、模拟来电、手持弹幕和掷骰子等多种实用小工具。该小程序提供了几十个功能,方便用户快速处理各种需求。

    PIC CMS图片网站管理系统 v1.2.ZIP

    7.自动给上传及本地化图片添加水印 8.自动提取首张图片为缩略图 9.自动生成任意大小缩略图 10.幻灯片模式图片展示页 11.支持静态缓存,全站生成HTML 12.内置采集器,迅速从网络抓取图文 13.自由分类,自动生成...

    PHP网络编程技术与实践 源码

    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的基础知识 ...

    DebianLNMP加强版一键安装包Debian6配置Nginx PHP5.3 MySQL最快最新

    图像处理例如“验证码”“图片水印”.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图片处理实例

    现在我们可以用PHPThumb类库来处理图片,包括,图片尺寸调整,图片截取,图片加水印,图片旋转等等功能。 使用演示:复制代码 代码如下://加载类库文件require_once ‘path/to/ThumbLib.inc.php’; //实例化类库,...

    onlineps在线处理图片 v1.0.zip

    onlineps在线处理图片一个在线处理图片的应用程序。   主要功能包括: •图像加边框 •改变尺寸 •垂直翻转 •水平翻转 •图像凸边 •图像凹边 •图像锐化 •图像单色 •图像着色 •图像马赛克 •图像...

    贤诚建站系统 v4.0

    贤诚建站系统是一套用PHP+mysql架构的免费开源文章管理系统程序。主要功能简介:1、自带...7、自定义上传图片是否加水印;8、可指定文章分类或者文章专用模板;9、远程批量下载图片文件到网站;10、网站附件批量管理。

Global site tag (gtag.js) - Google Analytics