PHP上传图片,以及为图片添加简单…

原创 2016年05月31日 14:20:58
// 上传文件类型列表
$uptypes = array (
'image/jpg',
'image/png',
'image/jpeg',
'image/pjpeg',
'image/gif',
'image/bmp',
'image/x-png'
);
$max_file_size = 20000000;                 //上传文件大小限制,单位BYTE
$destination_folder = '/media/img/icon/';     //上传文件路径
$watermark = 2;                         //是否附加水印(1为加水印,其他为不加水印);
$watertype = 1;                         //水印类型(1为文字,2为图片)
$waterposition = 1;                     //水印位置(1为左下角,2为右下角,3为左上角,4为右上角,5为居中);
$waterstring = "@Leo-Jen"; //水印字符串
$waterimg = "xplore.gif";                //水印图片
$imgpreview = 1;                         //是否生成预览图(1为生成,其他为不生成);
$imgpreviewsize = 1 / 2;                 //缩略图比例
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
//判断是否有上传文件
if (is_uploaded_file($_FILES['upfile']['tmp_name'])) {
$upfile = $_FILES['upfile'];
$name = $upfile['name'];             //文件名
$type = $upfile['type'];             //文件类型
$size = $upfile['size'];             //文件大小
$tmp_name = $upfile['tmp_name'];     //临时文件
$error = $upfile['error'];         //出错原因
if ($max_file_size < $size) {        //判断文件的大小
echo '上传文件太大';
exit ();
}
if (!in_array($type, $uptypes)) {        //判断文件的类型
echo '上传文件类型不符' . $type;
exit ();
}
if (!file_exists($destination_folder)) {
mkdir($destination_folder);
}
$pinfo = pathinfo($name);
$ftype = $pinfo['extension'];
if (file_exists("media/img/icon/" .  time() . "." . $ftype)) {
//             echo $_FILES["upfile"]["name"] . " already exists. ";
} else {
move_uploaded_file($_FILES["upfile"]["tmp_name"], "media/img/icon/" . time() . "." . $ftype);
//             echo "Stored in: " . "media/img/" . $_FILES["upfile"]["name"];
}
$destination = "media/img/icon/" . time() . "." . $ftype;
//         if (file_exists($destination) ) {
//             echo "同名的文件已经存在了";
//             exit ();
//         }
//         if (!move_uploaded_file($tmp_name, $destination)) {
//             echo "移动文件出错";
//             exit ();
//         }
$pinfo = pathinfo($destination);
$fname = $pinfo['basename'];
$image_size = getimagesize("media/img/icon/" . $fname);
//         echo " 已经成功上传
文件名: " . $destination_folder . $fname . "
";
//         echo " 宽度:" . $image_size[0];
//         echo " 长度:" . $image_size[1];
//         echo "
大小:" . $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 "
图片预览:
";
// echo "PHP上传图片,以及为图片添加简单的水印demo echo " alt=\"图片预览:\r文件名:" .$destination_folder . $fname . "\r上传时间:\">";
// }
echo $destination_folder . $fname;
}
}
}

相关文章推荐

php简单上传图片到服务器 - 后缀不变 - 时间戳作为文件名

上午的时候做了desgin,手有点痒痒,好吧,要不试试白。先定个小目标,完成到本地服务器的上传,参考了 http://www.w3schools.com/php/php_file_upload.asp...

PHP 上传图片添加水印

PHP5.6通过CURL上传图片@符无效的兼容问题

今天本来想试试一个图片云的API,于是本地做了个上传图片的测试,结果灰常郁闷的发现以前一直用的好好的CURL上传图片居然死活不起作用,几分钟搞定的事情,结果折腾了半天才找到原因,居然是兼容性问题,真是...

php 上传图片生成缩略图

  • 2015年01月29日 22:31
  • 14.52MB
  • 下载

php关于上传图片的验证

  • 2015年06月30日 09:50
  • 864B
  • 下载

php上传图片自动生成缩略图方法函数

$file_name='C:\AppServ\www\_MG_9888.jpg'; $file_new='C:\AppServ\www\bbbb.jpg'; scal_pic($file_name,...

PHP批量上传图片

  • 2015年04月22日 19:40
  • 98KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PHP上传图片,以及为图片添加简单…
举报原因:
原因补充:

(最多只允许输入30个字)