当前位置:Gxlcms > PHP教程 > php图片上传类,支持加水印,生成略缩图_PHP教程

php图片上传类,支持加水印,生成略缩图_PHP教程

时间:2021-07-01 10:21:17 帮助过:9人阅读

分享一个网友写的php图片上传类,支持加水印,生成略缩图功能哦,面是配置和可以获取的一些信息(每一个配置信息都有默认值,如无特殊需要,可以不配置):
代码如下

/*----------------------------------------------------------------------------------
*
*----------------------------------------------------------------------------------
*/
class image_up{
//定义基本参数
private $uptype=array('image/jpg','image/jpeg','image/png','image/pjpeg','image/gif','image/bmp','image/x-png'); //上传文件类型
private $max_file_size=102400; //上传大小限制(单位:KB)
private $destination_folder="up/"; //上传文件路径
private $watermark=1; //是否附加水印
private $watertype=1; //水印类型(1为文字,2为图片)
private $waterposition=1; //水印位置(1为左下角,2为右下角,3为左上角,4为右上角,5为居中);
private $waterstring=null; //水印字符串
private $waterimg=null; //水印图片
private $imgpreview=1; //是否生成预览图(1为生成,其他为不生成);
private $imgpreviewsize=1; //预览图比例,0为按固定宽和高显示,其他为比例显示
private $imgwidth=200; //预览图固定宽度
private $imgheight=200; //预览图固定高度
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
private $imgthu=1; //是否生成且保存略缩图,1为生成,0为不生成
private $imgthu_folder=null; //略缩图保存路径,默认与文件路径一致
private $imgthu_fixed=0; //略缩图是否使用固定宽高,1为使用,0为灵活变动
private $imgthu_width=200; //略缩图宽度
private $imgthu_height=200; //略缩图高度

private $imgthu_name=null; //略缩图名称
//******************************************************************************************************************
private $inputname="upfile"; //文件上传框名称
//******************************************************************************************************************
private $img_preview_display; //图片预览图显示
//******************************************************************************************************************
//文件上传相关信息,1为文件不存在,2为类型不符合,3为超出大小限制,4为上传失败,0为上传成功
private $file_up_info=null;
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//可在外部获取上传文件基本信息
private $file_name; //客服端文件的原名称
private $file_type; //文件的MIME类型
private $file_size; //已上传文件的大小,单位/字节
private $file_tmp_name; //储存的临时文件名
private $file_error; //该文件上传相关错误代码

private $img_size; //取得图片的长宽
private $file_basename; //获取带扩展名的全名
private $file_extension; //获取文件扩展名
private $filename; //文件名(不带扩展名)
private $destination; //问价路径加名称
//******************************************************************************************************************
public function __set($propety_name,$value){
https://www.gxlcms.com/$this->$propety_name=$value;
}
public function __get($property_name){
if(isset(https://www.gxlcms.com/$this->$property_name))
return(https://www.gxlcms.com/$this->$property_name);
else return(NULL);
}
//******************************************************************************************************************
//定义文件上传功能
public function up(){
//判断文件是否存在
if(!is_uploaded_file($_FILES[https://www.gxlcms.com/$this->inputname]["tmp_name"])){
https://www.gxlcms.com/$this->file_up_info=1;
return;
}
//获取并赋值相应基本参数
$upfile=$_FILES[https://www.gxlcms.com/$this->inputname];
https://www.gxlcms.com/$this->file_name=$upfile["name"];
https://www.gxlcms.com/$this->file_type=$upfile["type"];
https://www.gxlcms.com/$this->file_size=$upfile["size"];
https://www.gxlcms.com/$this->file_tmp_name=$upfile["tmp_name"];
https://www.gxlcms.com/$this->file_error=$upfile["error"];
//检查文件类型是否符合
if(!in_array(https://www.gxlcms.com/$this->file_type,https://www.gxlcms.com/$this->uptype)){
https://www.gxlcms.com/$this->file_up_info=2;
return;
}
//检查文件大小是否超出限制
if(https://www.gxlcms.com/$this->file_size>https://www.gxlcms.com/$this->max_file_size){
https://www.gxlcms.com/$this->file_up_info=3;
return;
}
//判断目录是否存在
if(!file_exists(https://www.gxlcms.com/$this->destination_folder))
mkdir(https://www.gxlcms.com/$this->destination_folder);
//进一步取得图片的信息并赋值
https://www.gxlcms.com/$this->img_size=getimagesize(https://www.gxlcms.com/$this->file_tmp_name);
$pathinfo=pathinfo(https://www.gxlcms.com/$this->file_name);
https://www.gxlcms.com/$this->file_extension=$pathinfo["extension"]; //获取文件扩展名
https://www.gxlcms.com/$this->file_basename=$pathinfo["basename"]; //获取带扩展名的全名
https://www.gxlcms.com/$this->filename=$pathinfo["filename"]; //文件名(不带扩展名)
$filename2=$pathinfo['filename'];
https://www.gxlcms.com/$this->destination = https://www.gxlcms.com/$this->destination_folder.https://www.gxlcms.com/$this->filename.".".https://www.gxlcms.com/$this->file_extension;
//判断文件名是否存在,如果存在则重命名
$n=1;
while (file_exists(https://www.gxlcms.com/$this->destination)){
while (file_exists(https://www.gxlcms.com/$this->destination)){
$n++;
https://www.gxlcms.com/$this->filename=https://www.gxlcms.com/$this->filename."(".$n.")";
https://www.gxlcms.com/$this->destination = https://www.gxlcms.com/$this->destination_folder.https://www.gxlcms.com/$this->filename.".".https://www.gxlcms.com/$this->file_extension;
}
https://www.gxlcms.com/$this->filename=$filename2."(".$n.")";
https://www.gxlcms.com/$this->destination = https://www.gxlcms.com/$this->destination_folder.https://www.gxlcms.com/$this->filename.".".https://www.gxlcms.com/$this->file_extension;
}
//移动上传的文件
if(move_uploaded_file(https://www.gxlcms.com/$this->file_tmp_name,https://www.gxlcms.com/$this->destination))
https://www.gxlcms.com/$this->file_up_info=0;
else https://www.gxlcms.com/$this->file_up_info=4;

//添加水印
if(https://www.gxlcms.com/$this->watermark==1){
https://www.gxlcms.com/$this->imgthu();
}
//生成略缩图
if(https://www.gxlcms.com/$this->imgthu==1){
https://www.gxlcms.com/$this->add_watermark();
}
//生成预览图
if(https://www.gxlcms.com/$this->imgpreviewsize == 0){
if(https://www.gxlcms.com/$this->img_size["0"]imgwidth) https://www.gxlcms.com/$this->imgwidth=https://www.gxlcms.com/$this->img_size["0"];
if(https://www.gxlcms.com/$this->img_size["1"]imgheight) https://www.gxlcms.com/$this->imgheight=https://www.gxlcms.com/$this->img_size["1"];
}else{
https://www.gxlcms.com/$this->imgwidth=https://www.gxlcms.com/$this->img_size["0"]*https://www.gxlcms.com/$this->imgpreviewsize;
https://www.gxlcms.com/$this->imgheight=https://www.gxlcms.com/$this->img_size["1"]*https://www.gxlcms.com/$this->imgpreviewsize;
}
https://www.gxlcms.com/$this->img_preview_display=" alt="图片预览:r文件名":https://www.gxlcms.com/$this->file_tmp_name />";
}
//====================================================================================================================
//====================================================================================================================
//生成略缩图功能
function imgthu(){
if(https://www.gxlcms.com/$this->imgthu_folder==null)
https://www.gxlcms.com/$this->imgthu_folder=https://www.gxlcms.com/$this->destination_folder;

//https://www.gxlcms.com/$this->imgthu_name=https://www.gxlcms.com/$this->filename."_t.".https://www.gxlcms.com/$this->file_extension;
$imgthu_name_b=https://www.gxlcms.com/$this->filename."_t";
$imgthu_name_b2=https://www.gxlcms.com/$this->filename."_t";
$destination_b=https://www.gxlcms.com/$this->imgthu_folder.$imgthu_name_b.".".https://www.gxlcms.com/$this->file_extension;
//判断文件名是否存在,如果存在则重命名
$n=1;
while (file_exists($destination_b)){
while (file_exists($destination_b)){
$n++;
$imgthu_name_b=$imgthu_name_b."(".$n.")";
$destination_b = https://www.gxlcms.com/$this->imgthu_folder.$imgthu_name_b.".".https://www.gxlcms.com/$this->file_extension;
}
$imgthu_name_b=$imgthu_name_b2."(".$n.")";
$destination_b = https://www.gxlcms.com/$this->imgthu_folder.$imgthu_name_b.".".https://www.gxlcms.com/$this->file_extension;
}


$imginfo=getimagesize(https://www.gxlcms.com/$this->destination);
switch($imginfo[2])
{
case 1:
$in=@imagecreatefromgif(https://www.gxlcms.com/$this->destination);
break;
case 2:
$in=@imagecreatefromjpeg(https://www.gxlcms.com/$this->destination);
break;
case 3:
$in=@imagecreatefrompng(https://www.gxlcms.com/$this->destination);
break;
case 6:
$in =@imagecreatefrombmp(https://www.gxlcms.com/$this->destination);
break;
default:
break;
}
//计算略缩图长宽
if(https://www.gxlcms.com/$this->imgthu_fixed==0){
if(https://www.gxlcms.com/$this->imgthu_height>($imginfo[1]/$imginfo[0])*https://www.gxlcms.com/$this->imgthu_width)
https://www.gxlcms.com/$this->imgthu_width = ($imginfo[0]/$imginfo[1])*https://www.gxlcms.com/$this->imgthu_height;
else
https://www.gxlcms.com/$this->imgthu_height=($imginfo[1]/$imginfo[0])*https://www.gxlcms.com/$this->imgthu_width;
}
$new = imageCreateTrueColor(https://www.gxlcms.com/$this->imgthu_width,https://www.gxlcms.com/$this->imgthu_height);
ImageCopyResized($new,$in,0,0,0,0,https://www.gxlcms.com/$this->imgthu_width,https://www.gxlcms.com/$this->imgthu_height,$imginfo[0],$imginfo[1]);
switch ($imginfo[2])
{
case 1:
imagejpeg($new,$destination_b);
break;
case 2:
imagejpeg($new,$destination_b);
break;
case 3:
imagepng($new,$destination_b);
break;
case 6:
imagewbmp($new,$destination_b);
break;
}
}
//====================================================================================================================
//====================================================================================================================
//添加水印功能
function add_watermark(){
//1 = GIF,2 = JPG,3 = PNG,4 = SWF,5 = PSD,6 = BMP,7 = TIFF(intel byte order),
//8 = TIFF(motorola byte order),9 = JPC,10 = JP2,11 = JPX,12 = JB2,13 = SWC,14 = IFF,15 = WBMP,16 = XBM。
$imginfo=getimagesize(https://www.gxlcms.com/$this->destination);
$im=imagecreatetruecolor(https://www.gxlcms.com/$this->img_size[0],https://www.gxlcms.com/$this->img_size[1]); //创建真彩色
$white=imagecolorallocate($im,255,255,255); //设置颜色
$black=imagecolorallocate($im,0,0,0);
$red=imagecolorallocate($im,255,0,0);
//在 image 图像的坐标 x,y(图像左上角为 0, 0)处用 color 颜色执行区域填充(即与 x, y 点颜色相同且相邻的点都会被填充)。
imagefill($im,0,0,$white);

switch($imginfo[2])
{
case 1:
$simage =imagecreatefromgif(https://www.gxlcms.com/$this->destination); // 创建一个新的形象,从文件或 URL
break;
case 2:
$simage =imagecreatefromjpeg(https://www.gxlcms.com/$this->destination);
break;
case 3:
$simage =imagecreatefrompng(https://www.gxlcms.com/$this->destination);
break;
case 6:
$simage =imagecreatefromwbmp(https://www.gxlcms.com/$this->destination);
break;
default:
echo ("不支持的文件类型");
break;
}
if(!empty($simage))
{
//位置设置
if(https://www.gxlcms.com/$this->watertype==1){
$str_len=strlen(https://www.gxlcms.com/$this->waterstring);
$str_width=$str_len*10;
$str_height=20;
}elseif(https://www.gxlcms.com/$this->watertype==1 && file_exists(https://www.gxlcms.com/$this->waterimg)){
$iinfo=getimagesize(https://www.gxlcms.com/$this->waterimg);
$str_width = $iinfo[0];
$str_height = $iinfo[1];
}

switch (https://www.gxlcms.com/$this->waterposition){
case 1:
$p_x=5;
$p_y=https://www.gxlcms.com/$this->img_size[1]-$str_height;
break;
case 2:
$p_x=https://www.gxlcms.com/$this->img_size[0]-$str_width;
$p_y=https://www.gxlcms.com/$this->img_size[1]-$str_height;
break;
case 3:
$p_x=5;
$p_y=0;
break;
case 4:
$p_x=https://www.gxlcms.com/$this->img_size[0]-$str_width;
$p_y=5;
break;
case 5:
$p_x=(https://www.gxlcms.com/$this->img_size[0]-$str_width)/2;
$p_y=(https://www.gxlcms.com/$this->img_size[1]-$str_height)/2;
break;
}
imagecopy($im,$simage,0,0,0,0,https://www.gxlcms.com/$this->img_size[0],https://www.gxlcms.com/$this->img_size[1]); //拷贝图像的一部分
//imagefilledrectangle($im,1,https://www.gxlcms.com/$this->img_size[1]-15,130,https://www.gxlcms.com/$this->img_size[1],$white); //将图片的封闭长方形区域着色

switch(https://www.gxlcms.com/$this->watertype)
{
case 1: //加水印字符串
imagestring($im,10,$p_x,$p_y,https://www.gxlcms.com/$this->waterstring,$red);
break;
case 2: //加水印图片
$simage1 =imagecreatefromgif(https://www.gxlcms.com/$this->waterimg);
imagecopy($im,$simage1,0,0,0,0,85,15);
imagedestroy($simage1);
break;
}

switch ($imginfo[2])
{
case 1:
//imagegif($nimage, $destination);
imagejpeg($im, https://www.gxlcms.com/$this->destination);
break;
case 2:
imagejpeg($im, https://www.gxlcms.com/$this->destination);
break;
case 3:
imagepng($im, https://www.gxlcms.com/$this->destination);
break;
case 6:
imagewbmp($im, https://www.gxlcms.com/$this->destination);
break;
}
//覆盖原上传文件
imagedestroy($im);
imagedestroy($simage);
}
}
}
?>


www.bkjia.comtruehttp://www.bkjia.com/PHPjc/444727.htmlTechArticle分享一个网友写的php图片上传类,支持加水印,生成略缩图功能哦,面是配置和可以获取的一些信息(每一个配置信息都有默认值,如无特殊...

人气教程排行