PHP多图片上传 并检查 加水印 源码

参数说明:
$max_file_size : 上传文件大小限制, 单位BYTE
$destination_folder : 上传文件路径
$watermark : 是否附加水印(1为加水印,其他为不加水印);
使用说明:
1. 将PHP.INI文件里面的"extension=php_gd2.dll"一行前面的;号去掉,因为我们要用到GD库;
2. 将extension_dir =改为你的php_gd2.dll所在目录;
* Enter description here...
*
* @param 上传文件大小限制, 单位BYTE $max_file_size
* @param 上传文件路径 $destination_folder
* @param 是否附加水印(1为加水印,其他为不加水印) $watermark
* @param 水印类型(1为文字,2为图片) $watertype
* @param 水印位置(1为左下角,2为右下角,3为左上角,4为右上角,5为居中) $waterposition
* @param 水印字符串 $waterstring
* @param 水印图片 $waterimg
* @param 是否生成预览图(1为生成,其他为不生成) $imgpreview
* @param 缩略图比例 $imgpreviewsize
*/
public function picnewsadd($max_file_size,$destination_folder,$watermark,$watertype,$waterposition,$waterstring,$waterimg,$imgpreview,$imgpreviewsize)
{
//上传文件类型列表
$uptypes=array(
‘image/jpg‘,
‘image/jpeg‘,
‘image/png‘,
‘image/pjpeg‘,
‘image/gif‘,
‘image/bmp‘,
‘image/x-png‘
);
if ($_SERVER[‘REQUEST_METHOD‘] == ‘POST‘)
{
if (!is_uploaded_file($_FILES["file0"][‘tmp_name‘]))
//是否存在文件
{
echo "图片不存在!";
exit;
}

$file = $_FILES["file0"];

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()."0.".$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,100,$image_size[1],$black);
switch($watertype)
//水印类型(1为文字,2为图片)
{

case 1: //加水印字符串
imagestring($nimage,2,3,$image_size[1]-15,$waterstring,$white);
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)
//是否生成预览图(1为生成,其他为不生成);
{
echo "<br>图片预览:<br>";
echo "<img src=\"".$destination."\" width=".($image_size[0]*$imgpreviewsize)." height=".($image_size[1]*$imgpreviewsize);
echo " alt=\"图片预览:\r文件名:".$destination."\r上传时间:\">";
}
}
$ffname=‘http://‘.$_SERVER[‘REMOTE_ADDR‘].‘/Jfinance/uploadpic/‘.$fname;
return $ffname;
}
调用 如下$fname=$picnews->picnewsadd(1048576,‘../../uploadpic/‘,1,1,1,‘www.tute.edu.cn‘,‘‘,‘‘,‘‘);

时间: 2024-07-30 10:19:39

PHP多图片上传 并检查 加水印 源码的相关文章

PHP之图片上传类(加了缩略图)

有缩略图功能 但是 感觉不全面,而且有点问题,继续学习,将来以后修改下 <form action="<?php $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data" method="post" ><input type="text" name="name" /><input type="file&q

4GB以上超大文件上传和断点续传服务器的源码

最近遇见一个需要上传超大大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现. 在某些业务中,大文件上传是一个比较重要的交互场景,如上传入库比较大的Excel表格数据.上传影音文件等.如果文件体积比较大,或者网络条件不好时,上传的时间会比较长(要传输更多的报文,丢包重传的概率也更大),用户不能刷新页面,只能耐心等待请求完成. 下面从文件上传方式入手,整理大文件上传的思路,并给出了相关实例代码,由于PHP内置了比较方便的文件拆分和拼接方法,因此服务端代码使用

基于networkComms通信框架的文件上传程序(包含全部源码)

本来想要研究下基于networkcomms的xamarin上的安卓开发,可是装了vs2015电脑太卡,暂时先放一下.把以前的程序翻出来改一下,分享给大家. networkcomms v3与 v2 用法上差别不大,本文程序基于开源的networkcomms2.31版本(gplv3协议) 程序基于.net2.0   开发工具vs2010 由于本人也还在学习中,不足之处请见谅,程序的性能大家可以自己测试下. 程序效果图: 服务器端: 客户端: (去除了数据库,用户名密码随便输入即可) 上传的文件,默认

从web编辑器 UEditor 中单独提取图片上传,包含多图片单图片上传以及在线涂鸦功能

UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码.(抄的...) UEditor是非常好用的富文本web编辑器,而且全中文API和注释,方便学习和使用.特别是图片上传查看及涂鸦功能极为喜欢,但是有很多情况我们并不需要Web编辑器,而只需要图片上传.那么问题来了,提取图片上传哪家强..... 网上有很多图片上传的控件.插件.但都不是那么的完美,有的只有一张图片上传不包含批量上传,有的没有图片查看

ASP.NET 图片上传工具类 upload image简单好用功能齐全

使用方法: UploadImage ui = new UploadImage(); //可选参数 //ui.SetWordWater = "哈哈";//文字水印 ui.SetPicWater = Server.MapPath("2.png");//图片水印(图片和文字都赋值图片有效) ui.SetPositionWater = 4;//水印图片的位置 0居中.1左上角.2右上角.3左下角.4右下角 ui.SetSmallImgHeight = "110,4

[原创]超强C#图片上传,加水印,自动生成缩略图源代码

<%@ Page Language=“C#“ AutoEventWireup=“true“ %> <%@ Import Namespace=“System“ %> <%@ Import Namespace=“System.IO“ %> <%@ Import Namespace=“System.Net“ %> <%@ Import NameSpace=“System.Web“ %> <%@ Import NameSpace=“Legalsof

layui加tp5图片上传实例

<div class="layui-fluid"> <div class="layui-row"> <form class="layui-form"> <div class="layui-form-item"> <label for="username" class="layui-form-label"> <span cl

微信端调取相册和摄像头,实现图片上传,并上传到本地服务器

在微信公众号网页开发时,遇到了图片上传的问题,查看了微信的开发者文档,里面的资料比较全.接着我们看一下整个的流程 1.config权限配置 $.ajax({ url:'wx_getConfig', type:'get', dataType:'json', async:false, success:function(data){ var appId = data[0].appId; var timestamp = data[0].timestamp; var nonceStr = data[0].

spring mvc 图片上传,图片压缩、跨域解决、 按天生成目录 ,删除,限制为图片代码等相关配置

spring mvc 图片上传,跨域解决 按天生成目录 ,删除,限制为图片代码,等相关配置 fs.root=data/ #fs.root=/home/dev/fs/ #fs.root=D:/fs/ #fs.domains=182=http://172.16.100.182:18080,localhost=http://localhost:8080 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE be