`

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

    博客分类:
  • 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所在目录;
****************************************************/
//上传文件类型列表
$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.hackhome.com/";  //水印字符串
$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>

分享到:
评论
1 楼 xieye 2008-12-05  
如果某种类型的代码网上较少,难找,欢迎贴出。共享。
大段的程序应用附件或代码格式贴出。

相关推荐

    图片(可加水印)上传程序

    本项目名为“图片(可加水印)上传程序”,它不仅提供了基本的图片上传功能,还支持添加水印,增加了版权保护和个性化定制的可能性。下面我们将详细探讨这个程序涉及的几个关键知识点。 首先,我们关注到程序是用...

    php上传图片及加水印的功能

    在PHP中实现图片上传并添加水印是一项常见的...综上所述,实现PHP图片上传并加水印的功能涉及多个环节,包括文件上传、图像处理和错误处理等。在实际应用中,应结合具体需求进行优化和调整,确保系统的稳定性和安全性。

    Flex_给图片加水印

    在给图片加水印时,我们需要用到ActionScript的位图操作类,如`flash.display.BitmapData`和`flash.geom.Matrix`。 2. **BitmapData对象**: 这是ActionScript中用于处理位图图像的核心类。我们可以创建一个`...

    html代码在线图片加水印源码

    HTML代码在线图片加水印源码是一个用于在网页上实现图片加水印功能的程序,主要基于HTML、CSS和JavaScript技术。在这个系统中,用户可以通过Web界面上传图片,并实时添加自定义的水印,以便保护版权或者展示品牌标识...

    PHP图片上传裁切水印程序

    在PHP编程领域,图片处理是一项常见的任务,包括图片上传、裁切、加水印等操作。这个名为"PHP图片上传裁切水印程序"的项目,显然是为了帮助开发者实现这些功能而设计的。下面我们将详细探讨相关的PHP图像处理技术。 ...

    PHP实例开发源码-PHP批量为图片加水印的代码已测.zip

    然后通过循环遍历文件列表,逐个对图片进行加水印的操作。 4. 文件路径操作:在处理图像文件时,需要正确处理文件路径。可能需要使用`realpath()`函数获取文件的绝对路径,`basename()`获取文件名,以及`dirname()`...

    单个PHP文件上传,图片上传,带水印

    在PHP中进行单个文件上传,尤其是图片...综上所述,实现一个包含图片上传和水印功能的PHP程序,需要掌握文件上传的原理,了解图像处理库的使用,以及如何在PHP中实现这些功能,同时还需要关注安全性、性能和用户体验。

    加水印小程序源码,纯代码前端,可以与任何语言衔接

    本文将详细解析一款名为"加水印小程序源码"的前端程序,该程序设计独特,具有高度灵活性,能够与各种编程语言无缝衔接。其主要功能是为用户提供方便快捷的水印添加服务,无论用户是从聊天记录中选择文件、使用相机...

    PHP图在线加水印源码.rar

    用户可以通过上传图片,然后由服务器端的PHP代码处理,添加预设或自定义的水印,最后返回加水印后的图片。开发人员可以从源代码中学习到PHP的图像处理技巧,如如何使用GD库或ImageMagick来读取、修改图像,并理解...

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

    PHP100视频教程14:PHP上传原理及应用 PHP100视频教程15:PHP生成HTML文件原理 PHP100视频教程16:PHP小偷程序原理和实例 PHP100视频教程17:PHP面向对象开发的学习(一) PHP100视频教程18:PHP面向对象开发的...

    php给图片加文字水印

    在现代互联网应用中,给图片添加水印是一项常见的需求,它不仅可以用于保护图片的版权,还可以为图片添加额外的信息。本文将详细介绍如何使用PHP编程语言来给图片添加文字水印。PHP是一种广泛使用的开源服务器端脚本...

    上传图片生成水印缩略图

    "上传图片生成水印缩略图"是一个典型的需求,它涉及到文件上传、图像处理和优化等多个技术环节。接下来,我们将深入探讨这个话题。 1. **文件上传**:在Web应用中,`fileUpload`通常指的是用户通过网页上传文件的...

    图像缩放与加水印实用类.rar

    PHP中实现加水印的方法通常包括定位水印的位置(如中心、角落等)、设置水印的透明度和大小,以及选择合适的字体和颜色。此压缩包中的类库很可能提供了这些参数的灵活配置,使得开发者可以轻松为用户上传的图片添加...

    多功能在线图片编辑器源码 加水印加文字修剪/图片批量处理程序

    本文将详细解析一款基于PHP开发的多功能在线图片编辑器源码,该源码具备加水印、添加文字、图片修剪以及批量处理等多种功能,适用于创建一个便捷的工具类网站。这款编辑器允许用户无需上传文件即可对图片进行高效...

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

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

    php课程(共100多节)

    14:PHP上传原理及应用 15:PHP生成HTML文件原理 16:PHP小偷程序原理和实例 17:PHP面向对象开发的学习(一) 18:PHP面向对象开发的学习(二) 19:PHP面向对象开发的学习(三) 20:PHP面向对象开发的学习(四) ...

    基于PHP的5556 php图片上传系统.zip

    5. **图像处理库**:例如GD库或Imagick,用于处理和转换上传的图片,如调整尺寸、裁剪、加水印等。 6. **配置文件**:包括PHP配置(如`php.ini`)、应用配置(如数据库连接信息)等。 7. **文档**:可能包含使用...

    php代码-七牛图片水印

    标题 "php代码-七牛图片水印" 描述的是一个使用PHP编程语言实现的,针对七牛云存储服务的图片加水印功能。这个功能在网站运营和图像处理中非常常见,可以用来保护版权或者增加品牌标识。接下来,我们将深入探讨PHP与...

    php 图片上传

    5. **图片处理**:有时候,我们可能需要对上传的图片进行一些处理,如调整尺寸、裁剪、加水印等。PHP可以使用GD库或Imagick扩展来实现这些功能。 6. **数据库记录**:为了跟踪和管理上传的图片,通常会在数据库中...

    基于PHP实现的WEB图片共享系统(源代码 论文).zip

    该压缩包文件“基于PHP实现的WEB图片共享系统(源代码 论文).zip”包含了一个使用PHP开发的Web图片共享平台的完整源代码和相关论文。这个系统旨在提供一个在线平台,让用户能够上传、浏览、分享和管理图片。下面我们...

Global site tag (gtag.js) - Google Analytics