PHP图片上传加水印

 更新时间:2016年11月25日 16:07  点击:1811







<?php

D+t"g-V$iR;ujbj0 
]J%QQ:tc6W;pgf0
/******************************************************************************PHPChina 开源社区门户o"]+r"O?F?J
 PHPChina 开源社区门户*OFRT_*T,
参数说明:
Dj;xVDE9a8i?z w)d0$max_file_size  : 上传文件大小限制, 单位BYTE
/yt.S],K+b E0$destination_folder : 上传文件路径PHPChina 开源社区门户r x2dwx* j0y
$watermark   : 是否附加水印(1为加水印,其他为不加水印);
5cQ2mS;i''y(V0 
6m$j(L%je%vP L0******************************************************************************/
PHPChina 开源社区门户tXpR"]W3N e nm/t(?
 PHPChina 开源社区门户 b)q6|1rG*X*mo v
//上传文件类型列表PHPChina 开源社区门户#l@}A%[!b
 PHPChina 开源社区门户-r"]?lG8Gy5V
$uptypes=array(PHPChina 开源社区门户;?F}Z+@a
    
''image/jpg'', PHPChina 开源社区门户?^U3BRy
    
''image/jpeg'',PHPChina 开源社区门户pRv,gh^_
    
/* 文件上传类 */
class Upload
{
    
public $InputName;    // 文件上传域控件名
    
    
/**  
    * 允许上传的文件类型
    * 形式为 array(''image/jpeg'', ''image/png'', ''image/gif'') 或包含此类数组的数组(与每个上传域控件对应)
    
*/
    
public $FileType;
    
    
/**  
    * 最大上传文件大小(单位:byte)
    * 形式为 array(''image'' => $size, ''audio'' => $size)(表示每种应用文件类型所对应的上传大小) 或包含此类数组的数组(与每个上传域控件对应)或一数值(表示所有上传文件均限制在此大小之下)
    
*/
    
public $FileMaxSize
    
    
public $FileSavePath;  // 文件保存路径(可为数组形式,表示不同上传域上传文件到不同的路径)
    public $FileSaveName;  // 文件保存名(不包含后缀名)(可为数组形式,表示不同上传域上传文件保存的不同名称)
    public $NoteFileFalse// 文件错误提示
    public $NoteFileType;  // 文件类型不符提示
    public $NoteFileSize;  // 文件大小超出提示
    
    
/* 上传文件并返回文件名信息(包含后缀名) */
    
public function UploadFile()
    {
        
$this->CheckFile(); // 检验文件
        $file = $_FILES[$this->InputName];
        
$file_number = count($file[''name'']); // 要上传的文件数
        $file_save_full_name = array(); // 文件保存名(包含后缀名)
        
        
for ($i = 0$i < $file_number$i++)
        {
            
$name = $file[''name''][$i];
            
            
if (!empty($name)) // 文件不为空
            {
                
/* 确定文件保存路径 */
                
if (is_array($this->FileSavePath))
                {
                    
$file_save_path = $this->FileSavePath[$i];
                }
                
else 
                {
                    
$file_save_path = $this->FileSavePath;
                }
                
                
/* 确定文件保存名(不包含后缀名) */
                
if (is_array($this->FileSaveName))
                {
                    
$file_save_name = $this->FileSaveName[$i];
                }
                
else 
                {
                    
$file_save_name = $this->FileSaveName;
                }
                
                
/* 开始保存 */
                
$this->CreatePath($file_save_path); // 如果路径不存在则创建路径
                if (!move_uploaded_file($file["tmp_name"][$i], $file_save_path . $file_save_name . $this->GetSuffix($file[''name''][$i])))
                {
                    
die($name . ''文件上传失败'');
                }
                
else 
                {
                    
$file_save_full_name[] = $file_save_name . $this->GetSuffix($file[''name''][$i]);
                }
            }
            
else 
            {
                
$file_save_full_name[] = null;
            }
        }
        
        
unlink($file);
        
        
/* 如果只有一个文件,则返回单个文件名 */
        
if (count($file_save_full_name== 1)
        {
            
$file_save_full_name = $file_save_full_name[0];
        }
        
        
return $file_save_full_name;
    }
    
    
/* 检验文件 */
    
private function CheckFile()
    {
        
$file = $_FILES[$this->InputName];
        
$file_number = count($file[''name'']); // 要上传的文件数
        
        
for ($i = 0$i < $file_number$i++)
        {
            
if (!empty($file[''name''][$i])) // 文件不为空
            {
                
$name  = $file[''name''][$i];
                
$type  = $file[''type''][$i];
                
$size  = $file[''size''][$i];
                
$error = $file[''error''][$i];
                
                
/* 确定允许上传文件类型列表 */
                
if (is_array($this->FileType[0]))
                {
                    
$file_type = $this->FileType[$i];
                }
                
else 
                {
                    
$file_type = $this->FileType;
                }
                
                
/* 确定最大上传文件大小 */
                
if (is_array($this->FileMaxSize))
                {
                    
$file_max_size_key = explode(''/'', $type);
                    
$file_max_size_key = $file_max_size_key[0];
                    
if (is_array($this->FileMaxSize[0]))
                    {
                        
$file_max_size = $this->FileMaxSize[$i][$file_max_size_key];
                    }
                    
else 
                    {
                        
$file_max_size = $this->FileMaxSize[$file_max_size_key];
                    }
                }
                
else 
                {
                    
$file_max_size = $this->FileMaxSize;
                }
                
                
/* 文件错误 */
                
if ($error > 0)
                {
                    
die($name . $this->NoteFileFalse);
                }
                
                
/* 文件类型不符 */
                
if (!in_array($type, $file_type))
                {
                    
die($name . $this->NoteFileType);
                }
                
                
/* 文件大小超过最大上传文件大小 */
                
if (!is_null($file_max_size&& $size > $file_max_size)
                {
                    
die($name . $this->NoteFileSize);
                }
            }
        }
    }
    
    
/* 获取文件后缀名 */
    
private function GetSuffix($fileName)
    {
        
return substr($fileName, strrpos($fileName, "."));
    }

    
/* 如果路径不存在则创建路径 */
    
private function CreatePath($filePath)
    {
        
if (!file_exists($filePath))
        {
            
mkdir($filePath);
        }
    }
}


使用方法:接着以本文开头所举例子来说明该类的调用方法(呵呵,调用是很方便的):
$upload_obj = new Upload(); // 文件上传对象
$upload_obj->InputName = ''upload_test''; // 文件上传域控件名
$upload_obj->FileType = array(array(''image/jpeg'', ''image/png''), array(''audio/mpeg'', ''video/x-msvideo'')); // 允许上传的文件类型
$upload_obj->FileMaxSize = array(''image'' => 100 * 1024, ''audio'' => 2 * 1024 * 1024, ''video'' => 2 * 1024 * 1024);
$upload_obj->FileSavePath = array(''upload/files/s/'', ''upload/files/z/'');
$upload_obj->FileSaveName = time();
$upload_obj->NoteFileFalse = ''文件错误'';
$upload_obj->NoteFileType  = ''文件类型不符'';
$upload_obj->NoteFileSize  = ''文件大小超出'';
$file_save_full_name = $upload_obj->UploadFile(); // 上传并获取文件全名(基本名加扩展名)(如果是多个文件则为数组形式)(全名用于在数据库中存储信息)

总结:就此可轻松实现若干文件上传,其实归根结底用到了PHP组文件上传,要注意的就是控件名的name后别忘了加上[],这样的好处就是遇到多个文件上传时就不用在调用层进行循环或一个一个处理上传了,我们的应用也因此而轻松。

  1. php在线帮助,http://www.php.net/manual/zh/

  2. php离线帮助, http://cn.php.net/get/php_manual_zh.chm/from/this/mirror

  3. freebsd 在线帮助, http://www.freebsd.org/doc/zh_CN.GB2312/books/handbook/index.html

  4. mysql在线帮助, http://www.linuxforum.net/books/mysqlmanual/manual_toc.html

  5. mysql在线帮助,http://www.gbunix.com/resource/doc/datebase/mysql/zh/manual_Installing.html

       
 

< NameVirtualHost *:8001
<VirtualHost *:8001>
    ServerAdmin   test@janabiz.com
    DocumentRoot  D:projectsmobilejudgewebapphtdocs
    ServerName    lyd.mobilejudge.com
    ErrorLog      logs/error_log.mj
    CustomLog     logs/access_log.mj common
   
    php_flag output_buffering On
    php_value output_handler mb_output_handler
    php_value default_charset Shift_JIS
    php_value mbstring.language Japanese
    php_flag mbstring.encoding_translation On
    php_value mbstring.http_input auto
    php_value mbstring.http_output Shift_JIS
    php_value mbstring.internal_encoding Shift_JIS
    php_value mbstring.substitute_character none
</VirtualHost>

1. apache.conf 中配置成这样,
2. 然后在windows/ system32/drivers/etc/hosts  中加入域名
本机IP  lyd.mobilejudge.com



< $a = "abcababa";
$count=strpos($a,"ab");
$str=substr_replace($a,"",$count,2);
 
输出结果:cababa
代码虽短,但也算是一个小算法!

SyntaxHighlighter.highlight();

[!--infotagslink--]

相关文章

  • 使用PHP+JavaScript将HTML页面转换为图片的实例分享

    这篇文章主要介绍了使用PHP+JavaScript将HTML元素转换为图片的实例分享,文后结果的截图只能体现出替换的字体,也不能说将静态页面转为图片可以加快加载,只是这种做法比较interesting XD需要的朋友可以参考下...2016-04-19
  • C#从数据库读取图片并保存的两种方法

    这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
  • Photoshop古装美女图片转为工笔画效果制作教程

    今天小编在这里就来给各位Photoshop的这一款软件的使用者们来说说把古装美女图片转为细腻的工笔画效果的制作教程,各位想知道方法的使用者们,那么下面就快来跟着小编一...2016-09-14
  • Python 图片转数组,二进制互转操作

    这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
  • php抓取网站图片并保存的实现方法

    php如何实现抓取网页图片,相较于手动的粘贴复制,使用小程序要方便快捷多了,喜欢编程的人总会喜欢制作一些简单有用的小软件,最近就参考了网上一个php抓取图片代码,封装了一个php远程抓取图片的类,测试了一下,效果还不错分享...2015-10-30
  • jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮

    jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮...2013-10-13
  • 利用JS实现点击按钮后图片自动切换的简单方法

    下面小编就为大家带来一篇利用JS实现点击按钮后图片自动切换的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-10-25
  • js实现上传图片及时预览

    这篇文章主要为大家详细介绍了js实现上传图片及时预览的相关资料,具有一定的参考价值,感兴趣的朋友可以参考一下...2016-05-09
  • Photoshop枪战电影海报图片制作教程

    Photoshop的这一款软件小编相信很多的人都已经是使用过了吧,那么今天小编在这里就给大家带来了用Photoshop软件制作枪战电影海报的教程,想知道制作步骤的玩家们,那么下面...2016-09-14
  • python opencv通过4坐标剪裁图片

    图片剪裁是常用的方法,那么如何通过4坐标剪裁图片,本文就详细的来介绍一下,感兴趣的小伙伴们可以参考一下...2021-06-04
  • 使用PHP下载CSS文件中的图片的代码

    共享一段使用PHP下载CSS文件中的图片的代码 复制代码 代码如下: <?php //note 设置PHP超时时间 set_time_limit(0); //note 取得样式文件内容 $styleFileContent = file_get_contents('images/style.css'); //not...2013-10-04
  • 微信小程序如何获取图片宽度与高度

    这篇文章主要给大家介绍了关于微信小程序如何获取图片宽度与高度的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-10
  • PHP swfupload图片上传的实例代码

    PHP代码如下:复制代码 代码如下:if (isset($_FILES["Filedata"]) || !is_uploaded_file($_FILES["Filedata"]["tmp_name"]) || $_FILES["Filedata"]["error"] != 0) { $upload_file = $_FILES['Filedata']; $fil...2013-10-04
  • C#中图片旋转和翻转(RotateFlipType)用法分析

    这篇文章主要介绍了C#中图片旋转和翻转(RotateFlipType)用法,实例分析了C#图片旋转及翻转Image.RotateFlip方法属性的常用设置技巧,需要的朋友可以参考下...2020-06-25
  • ps怎么制作图片阴影效果

    ps软件是现在很多人比较喜欢的,有着非常不错的使用效果,这次文章就给大家介绍下ps怎么制作图片阴影效果,还不知道制作方法的赶紧来看看。 ps图片阴影效果怎么做方法/...2017-07-06
  • OpenCV如何去除图片中的阴影的实现

    这篇文章主要介绍了OpenCV如何去除图片中的阴影的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-29
  • C#将图片和字节流互相转换并显示到页面上

    本文主要介绍用C#实现图片转换成字节流,字节流转换成图片,并根据图片路径返回图片的字节流,有需要的朋友可以参考下...2020-06-25
  • JavaScript 如何禁止用户保存图片

    这篇文章主要介绍了JavaScript 如何禁止用户保存图片,帮助大家完成需求,更好的理解和使用JavaScript,感兴趣的朋友可以了解下...2020-11-19
  • 百度编辑器ueditor修改图片上传默认路径

    本案例非通用,仅作笔记以备用 修改后的结果是 百度编辑器里上传的图片路径为/d/file/upload1...2014-07-03
  • php上传图片学习笔记与心得

    我们在php中上传文件就必须使用#_FILE变量了,这个自动全局变量 $_FILES 从 PHP 4.1.0 版本开始被支持。在这之前,从 4.0.0 版本开始,PHP 支持 $HTTP_POST_FILES 数组。这...2016-11-25