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

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 " 已经成功上传
文件名: ".$destination_folder.$fname."
";

echo " 宽度:".$image_size[0];

echo " 长度:".$image_size[1];

echo "
大小:".$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 "
图片预览:
";

echo "图片预览:
文件名:";

}

}

$ffname='http://'.$_SERVER['REMOTE_ADDR'].'/Jfinance/uploadpic/'.$fname;

return $ffname;

}

调用 如下$fname=$picnews->picnewsadd(1048576,'../../uploadpic/',1,1,1,'www.tute.edu.cn','','','');

转载于:https://www.cnblogs.com/jyb2014/p/4171846.html

更多相关:

  • #include                        #include #include #include    ...

  • # 调整图像亮度input_image = cv2.cvtColor(input_image , cv2.COLOR_BGR2HSV)input_image [:, :, 2] = scale_value * input_image [:, :, 2]input_image [:, :, 2][input_image [:, :, 2...

  • area_center_gray ( Regions, Image : : : Area, Row, Column )    计算Image图像中Region区域的面积Area和重心(Row,Column)。 cooc_feature_image ( Regions, Image : : LdGray, Direction : En...

  • 1、显示一幅二值图像: >> bw = zeros(90,90); >> bw(2:2:88,2:2:88) = 1; >> imshow(bw); >> 2、利用image函数显示一幅索引图像:   >> [X,MAP] = imread('E:STUDY_softwareMatlab2016images11.jp...

  • iOS 相册和网络图片的存取 保存 UIImage 到相册 UIKit UIKit 中一个古老的方法,Objective-C 的形式 void UIImageWriteToSavedPhotosAlbum(UIImage *image, id completionTarget, SEL completionSelector, void...

  • 1. 定义网络的基本参数 定义输入网络的是什么: input = Input(shape=(240, 640, 3)) 反向传播时梯度下降算法 SGD一定会收敛,但是速度慢 Adam速度快但是可能不收敛 [link](https://blog.csdn.net/wydbyxr/article/details/84822806...

  • size_t和int       size_t是一些C/C++标准在stddef.h中定义的。这个类型足以用来表示对象的大小。size_t的真实类型与操作系统有关。 在32位架构中被普遍定义为: typedef   unsigned int size_t; 而在64位架构中被定义为: typedef  unsigned lo...

  • 我在 https://blog.csdn.net/wowricky/article/details/83218126 介绍了一种内存池,它的实现类似于linux 中打开slub_debug (1. make menuconfig: Kenel hacking -> Memory Debugging, 2. comand line中传入...

  • 项目开发中需要从引擎 获取一定范围的数据大小,用作打点上报,测试过程中竟然发现写入了一部分数据之后通过GetApproximateSizes 获取写入的key的范围时取出来的数据大小竟然为0。。。难道发现了一个bug?(欣喜) 因为写入的数据是小于一个sst的data-block(默认是4K),会不会因为GetApproximate...