`

php > 图片上传 + 水印

    博客分类:
  • php
 
阅读更多

 

send.html

<html>
  
 <head>
  <title>File Uploader</title><meta charset="utf-8">
 </head>

 <body>
  <h3>File Upload</h3>
  Select a file to upload:<br>

  <form action="img_receive.php" method="post" enctype="multipart/form-data">
  <input type="file" name="upfile" size="45">
  <br>
  <input type="submit" value="Upload File">
  </form>

 </body>

</html>

 

接收 img_receive.php

 

<meta charset="utf-8">
<?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="up/"; //上传文件路径
$watermark=1;      //是否附加水印(1为加水印,其他为不加水印);
$watertype=1;      //水印类型(1为文字,2为图片)
$waterposition=1;     //水印位置(1为左下角,2为右下角,3为左上角,4为右上角,5为居中);
$waterstring="http://jquery.com";  //水印字符串
$waterimg="xplore.gif";    //水印图片
$imgpreview=1;      //是否生成预览图(1为生成,其他为不生成);
$imgpreviewsize=1/2;    //缩略图比例

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)//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上传时间:\">";
    }
}
?>

 

 

 

 

分享到:
评论

相关推荐

    PHP上传类+水印(文字/图片)+缩略图

    这个“PHP上传类+水印(文字/图片)+缩略图”功能提供了完整的解决方案,让我们来详细探讨其中涉及的知识点。 首先,**文件上传**是网页应用中必不可少的部分,它允许用户将本地文件传送到服务器。在PHP中,我们...

    php上传图片自动缩略图+水印类

    在PHP开发中,图片上传、自动缩略图生成和水印添加是常见的需求,尤其在构建网站或Web应用时。这个“php上传图片自动缩略图+水印类”提供了这些功能,使得开发者能够轻松处理用户上传的图片。下面将详细讲解其中涉及...

    php图片加水印且上传至cos

    图片加水印后上传至对象存储,亲测可用。 环境:php语言,qcloud/cos-sdk-v5 COS上传扩展。需要安装gd库。 注意,腾讯云服务函数不可用(腾讯云php环境没有安装gd库),需要换成第三方图片处理扩展

    多文件上传+水印处理

    在IT行业中,多文件上传和水印处理是常见的需求,特别是在网站内容管理和媒体分享平台。本文将详细解析如何使用PHP实现这两个功能,并结合代码注释进行深入讲解。 首先,我们来了解一下多文件上传。在PHP中,我们...

    4.PHP使用插件Mpdf 给PDF文件加水印

    如果你需要添加图片水印,可以使用`SetWatermarkImage`方法,传入图片路径和透明度: ```php $mpdf-&gt;SetWatermarkImage('path/to/watermark.png', 0.2); // 图片水印,第二个参数是透明度 ``` 5. 读取和合并PDF ...

    php上传+缩略图+打水印类

    在PHP编程领域,文件上传、图像处理和添加水印是常见的功能需求,尤其在网站开发中,例如用户头像上传、商品图片展示等场景。这个"php上传+缩略图+打水印类"提供了完整的解决方案,使得开发者可以快速集成这些功能到...

    PHP图片处理(上传、加水印、缩略图)

    PHP图片处理(上传、加水印、缩略图),对图片的处理

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

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

    php图片文件上传 水印缩略图

    // 图片上传目录 // 移动文件到指定目录 if(move_uploaded_file($temp_file, $upload_dir . $file_name)) { echo "文件上传成功"; } else { echo "文件上传失败"; } } ?&gt; ``` 接下来是水印的添加。在PHP中...

    PHP图片上传、加水印及生成清晰缩略图等综合处理类

    这个名为"PHP图片上传、加水印及生成清晰缩略图等综合处理类"的资源提供了一个全面的解决方案,它能帮助开发者高效地完成这些操作。下面将详细介绍这个类的主要功能和使用方法。 首先,图片上传是网页应用中必不可...

    php多张加水印图片上传代码

    在PHP中处理多张图片上传并添加水印是一项常见的任务,尤其在开发涉及用户交互的Web应用时。本文将深入探讨如何实现这个功能,包括图片上传的步骤、处理多文件上传的方法以及如何在图片上添加水印。 1. **图片上传...

    PHP图片上传+旋转+缩略+存储

    这个"PHP图片上传+旋转+缩略+存储"的压缩包文件包含了两个关键的PHP脚本:imgwatermark.php和index.php,它们分别可能用于实现上述功能。 1. **图片上传**: 图片上传通常涉及到文件上传表单的设计,使用`&lt;form&gt;`...

    php给上传图片加水印类.zip

    功能:PHP图片水印 (水印支持图片或文字) $groundImage 背景图片,即需要加水印的图片,暂只支持GIF,JPG,PNG格式; $waterImage 图片水印,即作为水印的图片,暂只支持GIF,JPG,PNG格式; $...

    php kindeditor 上传图片水印功能

    这个压缩包文件很可能包含了一个已经配置好的PHP环境,以及针对KindEditor4.1.10版本的图片上传和水印处理的代码。 首先,让我们详细解释一下“上传图片水印功能”。在网站中,有时我们需要在用户上传的图片上添加...

    PHP图片上传裁切水印程序

    这个名为"PHP图片上传裁切水印程序"的项目,显然是为了帮助开发者实现这些功能而设计的。下面我们将详细探讨相关的PHP图像处理技术。 1. **图片上传**:在Web应用中,图片上传通常涉及用户通过表单提交图片文件,...

    php上传图片添加文字或者图片水印

    总结,通过PHP的GD库,我们可以轻松地在上传的图片上添加图片或文字水印,并灵活配置水印的位置。这不仅可以增强网站的版权保护,也能增加品牌形象的曝光。在实际应用中,可以根据项目需求进行更复杂的定制,如调整...

    php实现打图片和文字水印

    在PHP中实现图片和文字水印是一项常见的任务,特别是在网站开发中,为了保护版权或增加品牌标识,我们经常需要在上传的图片上添加水印。本文将详细介绍如何使用PHP实现这一功能。 首先,我们需要理解水印的基本概念...

    PHP上传图片打水印

    在PHP中实现图片上传并添加水印是一项常见的需求,尤其在网站开发中,为了保护版权或者增加品牌标识,经常需要在用户上传的图片上添加水印。本教程将详细介绍如何利用PHP实现这一功能。 首先,我们需要理解上传图片...

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

    在PHP中进行单个文件上传,尤其是图片上传并添加水印,是常见的Web开发任务,主要涉及以下几个核心知识点: 1. **HTTP表单与文件上传**:首先,我们需要在HTML中创建一个`&lt;form&gt;`标签,设置`enctype="multipart/...

    PHP批量水印(文字及图片)

    在PHP编程领域,批量添加水印是一项常见的任务,尤其对于网站运营者来说,为了保护自己的版权或者提升品牌形象,经常需要在上传的图片上批量添加文字或图像水印。本教程将详细讲解如何使用PHP实现这一功能,同时针对...

Global site tag (gtag.js) - Google Analytics