实用的php增删改查库(包含图片操作)

2017-12-01 08:52:47来源:CSDN作者:carolcoral人点击

分享

实用的增删改查操作库function.php

<?php 

//公共函数库


/**

  * 文件上传处理函数

  * @param string filename 要上传的文件表单项名

  * @param string $path上传文件的保存路径

  * @param array  允许的文件类型

  * @return array 二个单元:["error"] false:失败,true:成功

  *  ["info"] 存放失败原因或成功的文件名

  */

function uploadFile($filename,$path,$typelist=null){

//1. 获取上传文件的名字

$upfile = $_FILES[$filename];

if(empty($typelist)){

$typelist=array("image/gif","image/jpg","image/jpeg","image/png");//允许的文件类型

}

//$path="upload3"; //指定上传文件的保存路径(相对的)

$res=array("error"=>false);//存放返回的结果

//2.过滤上传文件件的错误号

if($upfile["error"]>0){

switch($upfile["error"]){

case 1: 

$res["info"]="上传的文件超过了 php.ini 中 upload_max_filesize 选项限制";

break;

case 2:

$res["info"]="上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项";

break;

case 3:

$res["info"]="文件只有部分被上传";

break;

case 4:

$res["info"]="没有文件被上传";

break;

case 6:

$res["info"]="找不到临时文件夹。";

break;

case 7:

$res["info"]="文件写入失败";

break;

default:

$res["info"]="未知错误!";

break;

}

return $res;

}


//3.本次文件大小的限制

if($upfile["size"]>1000000000000000000000000){

$res["info"]="上传文件过大!";

return $res;

}


//4. 过滤类型

if(!in_array($upfile["type"],$typelist)){

$res["info"]="上传类型不符!".$upfile["type"];

return $res;

}


//5. 初始化下信息(为图片产生一个随机的名字)

$fileinfo = pathinfo($upfile["name"]);

do{

$newfile = date("YmdHis").rand(1000,9999).".".$fileinfo["extension"];//随机产生一个的文件名

}while(file_exists($newfile));

//6. 执行上传处理

if(is_uploaded_file($upfile["tmp_name"])){

if(move_uploaded_file($upfile["tmp_name"],$path."/".$newfile)){

//将上传成功后的文件名赋给返回数组

$res["info"]=$newfile;

$res["error"]=true;

return $res;

}else{

$res["info"]="上传文件失败!";

}

}else{

$res["info"]="不是一个上传的文件!";

}

return $res;

}


//========================================================================================


/**

 * 等比缩放函数(以保存的方式实现)

 * @param string $picname 被缩放的处理图片源

 * @param int $maxx 缩放后图片的最大宽度

 * @param int $maxy 缩放后图片的最大高度

 * @param string $pre 缩放后图片名的前缀名

 * @return String 返回后的图片名称(带路径),如a.jpg=>s_a.jpg

 */

function imageUpdateSize($picname,$maxx=10000000000000000,$maxy=10000000000000000,$pre="s_"){

$info = getimageSize($picname); //获取图片的基本信息

$w = $info[0];//获取宽度

$h = $info[1];//获取高度

//获取图片的类型并为此创建对应图片资源

switch($info[2]){

case 1: //gif

$im = imagecreatefromgif($picname);

break;

case 2: //jpg

$im = imagecreatefromjpeg($picname);

break;

case 3: //png

$im = imagecreatefrompng($picname);

break;

default:

die("图片类型错误!");

}

//计算缩放比例

if(($maxx/$w)>($maxy/$h)){

$b = $maxy/$h;

}else{

$b = $maxx/$w;

}

//计算出缩放后的尺寸

$nw = floor($w*$b);

$nh = floor($h*$b);

//创建一个新的图像源(目标图像)

$nim = imagecreatetruecolor($nw,$nh);

//执行等比缩放

imagecopyresampled($nim,$im,0,0,0,0,$nw,$nh,$w,$h);

//输出图像(根据源图像的类型,输出为对应的类型)

$picinfo = pathinfo($picname);//解析源图像的名字和路径信息

$newpicname= $picinfo["dirname"]."/".$pre.$picinfo["basename"];

switch($info[2]){

case 1:

imagegif($nim,$newpicname);

break;

case 2:

imagejpeg($nim,$newpicname);

break;

case 3:

imagepng($nim,$newpicname);

break;

}

//释放图片资源

imagedestroy($im);

imagedestroy($nim);

//返回结果

return $newpicname;

}


//========================================================================================


/**

 * 为一张图片添加上一个logo图片水印(以保存的方式实现)

 * @param string $picname 被处理图片源

 * @param string $logo 水印图片

 * @param string $pre 处理后图片名的前缀名

 * @return String 返回后的图片名称(带路径),如a.jpg=>n_a.jpg

 */

function imageUpdateLogo($picname,$logo,$pre="n_"){

$picnameinfo = getimageSize($picname); //获取图片源的基本信息

$logoinfo = getimageSize($logo); //获取logo图片的基本信息

//var_dump($logoinfo);

//根据图片类型创建出对应的图片源

switch($picnameinfo[2]){

case 1: //gif

$im = imagecreatefromgif($picname);

break;

case 2: //jpg

$im = imagecreatefromjpeg($picname);

break;

case 3: //png

$im = imagecreatefrompng($picname);

break;

default:

die("图片类型错误!");

}

//根据logo图片类型创建出对应的图片源

switch($logoinfo[2]){

case 1: //gif

$logoim = imagecreatefromgif($logo);

break;

case 2: //jpg

$logoim = imagecreatefromjpeg($logo);

break;

case 3: //png

$logoim = imagecreatefrompng($logo);

break;

default:

die("logo图片类型错误!");

}


//执行图片水印处理

imagecopyresampled($im,$logoim,$picnameinfo[0]-$logoinfo[0],$picnameinfo[1]-$logoinfo[1],0,0,$logoinfo[0],$logoinfo[1],$logoinfo[0],$logoinfo[1]);

//输出图像(根据源图像的类型,输出为对应的类型)

$picinfo = pathinfo($picname);//解析源图像的名字和路径信息

$newpicname= $picinfo["dirname"]."/".$pre.$picinfo["basename"];

switch($picnameinfo[2]){

case 1:

imagegif($im,$newpicname);

break;

case 2:

imagejpeg($im,$newpicname);

break;

case 3:

imagepng($im,$newpicname);

break;

}

//释放图片资源

imagedestroy($im);

imagedestroy($logoim);

//返回结果

return $newpicname;

}

微信扫一扫

第七城市微信公众平台