PHP实现网站上传图片自动加水印

用PHP给上传图片加水印的程序是通过判断文件类型建立图形,然后把其复制到原建立的图形上,填充并建立rectangle,以备写入imagestring()或是原已经定好的图像程序当中判断水印类型:一是字符串,另是增加一个图形对象在上面。如果你对PHP的GD库比较熟悉,看懂这篇文章一点都不难了!

以下是引用片段:

以下为引用的内容:

/*****************************************************

参数说明:

$max_file_size : 上传文件大小限制, 单位BYTE

$destination_folder : 上传文件路径

$watermark : 是否附加水印(1为加水印,其他为不加水印);

使用说明:

1. 将PHP.INI文件里面的"extension=php_gd2.dll"一行前面的;号去掉,因为我们要用到GD库;

2. 将extension_dir =改为你的php_gd2.dll所在目录;

3. http://www.knowsky.com/php.asp;

****************************************************/

//上传文件类型列表

$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 "<ccid_file values="\" width=".($image_size[0]*$imgpreviewsize)."
height=".($image_size[1]*$imgpreviewsize);"
    echo " alt=\"图片预览:\r文件名:".$destination."\r上传时间:\" />";
    }
}
?>
</body>
</html>

时间: 2025-01-30 14:35:46

PHP实现网站上传图片自动加水印的相关文章

ps如何制作水印?wordpress上传图片自动加水印

大家都知道图片被盗用是很令人气愤的一件事.很多时候辛苦制作的宣传图片,淘宝商品描述或者商品实拍照片等被无情盗用后打上别人的水印都让我们心寒不已.今天带给大家一片使用photoshop制作图片水印的教程,方便大家给图片打上自己的独特标签. 首先看一下水印效果: 上图右上角的网址是比较简单的一种水印效果,简单分析一下,使用photoshop大致需要两步去完成上述水印制作: 使用文字工具输入水印文字. 调节文字透明度,覆盖底部图片. 首先,我们打开photoshop,点击文件-新建菜单,设置默认为宽度

想给网站上图片加水印。

问题描述 想给网站上图片加水印.只需要给有些图片加水印.没有上传图片的功能.求代码,,,方法 解决方案 解决方案二:文字水印百度搜一下吧就几句代码很简单的解决方案三:引用1楼longlong881129的回复: 文字水印百度搜一下吧就几句代码很简单的 我很菜的解决方案四:///<summary>///添加水印方法(JPG图片)///</summary>///<paramname="filepath">原始图片路径</param>///&l

ckeditor编辑器上传图片自动加style尺寸

问题描述 ckeditor编辑器上传图片自动加style尺寸 1:织梦的系统.默认的编辑器 ckeditor2:文章模型.3:上传单张图片,总是自动获取尺寸后加入到代码中转换之后的代码如现在我网站响应式,图片不能定义宽高.自动加成这样.会拉伸变形.请大师指点如何解决. 解决方案 kindeditor/ckeditor编辑器加+图片自动上传成功(源码下载)

php 图片加水印与上传图片加水印php类_php技巧

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

php图片加水印,切头像图和自动缩放

 代码如下 复制代码 <html> <head>   <meta http-equiv="content-type" content="text/html; charset=gb2312">   <meta name="author" content="verdana core, phpdoc.net inc.">   <title>上传文件测试</title&

php实现给上传图片加水印的程序代码

用PHP给上传图片加水印的程序是通过判断文件类型建立图形,然后把其复制到原建立的图形上,填充并建立rectangle,以备写入imagestring()或是原已经定好的图像程序当中判断水印类型:一是字符串,另是增加一个图形对象在上面.如果你对PHP的GD库比较熟悉,看懂这篇文章一点都不难了! /***************************************************** 参数说明: $max_file_size  : 上传文件大小限制, 单位BYTE $destin

PHP实例程序:实现给上传图片加水印图案的做法

<form action="<?=$_SERVER['PHP_SELF']?>" method="post" enctype="multipart/form-data" name="form1" id="form1">  <table width="486" border="0" align="center" cell

PHP实现给上传图片加水印图案的做法

<form action="<?=$_SERVER['PHP_SELF']?>" method="post" enctype="multipart/form-data" name="form1" id="form1"> <table width="486" border="0" align="center" cellp

简单的php图片上传自动给图片加水印

本文主要实现了php图片上传自动给图片加水印,在下篇中我会给出用php添加文字水印的代码. php给图片加水印其实很简单,没有想象的那么神奇,就是利用了php里面的一个GD库.说起GD库,其实就是php里面一个专门用于处理图片有关的扩展,比如我们熟悉的验证码.生成缩略图,包括今天所说的php给图片加水印都是要有GD库的支持. 提示:新安装的php环境,可能需要开启GD库,开启方法:打开php.ini,去掉extension=php_gd2.dll前面的";"然后重启apache/iis