php 图片上传的公共方法(按图片宽高缩放或原图)
2016-09-02 14:11
447 查看
写的用于图片上传的公共方法 类调用方法:
$upload_name='pic'; $type = 'logo_val'; $file_name = 'logo_' . $user_id .create_strcode(5). '.jpg'; //保存文件名 $savepath = "/uploads/user_logo/"; //上传文件的存放路径 $img_width=$img_height='100'; $result=upload_images_core($_FILES,$upload_name,$file_name,$savepath,$img_width,$img_height);
/* * 图片上传核心处理方法(按图片宽高缩放) * @param $file_arr array 图片上传$_FILES获取的数组 * @param $upload_name 页面file控件name值 * @param $img_name 图片名称(含后缀) * @param savepath 新图片保存目录 * @param maxwidth 新图片最大宽度 * @param maxwidth 新图片最大高度 * @author xufeng 837274769@qq.com * */ function upload_images_core($file_arr,$upload_name,$file_name,$savepath,$maxwidth=100,$maxheight=100){ if(empty($file_arr) || empty($upload_name)){//当接收文件为空或控件名称为空时,直接返回错误 return array('state'=>RESULT_FAILURE,'msg'=>'不知名错误'); }else{ $file_arr=$file_arr[$upload_name]; } $type = strtolower(substr($file_arr['name'],strrpos($file_arr['name'],'.')+1)); //得到文件类型,并且都转化成小写 $allow_type = array('jpg','jpeg','gif','png'); //允许上传的类型 $maxsize = 2048000; //最大限制 2M $base_path = APPPATH . '../htdocs'; $img_path=$base_path.$savepath.$file_name; //检测是否是正常HTTP POST上传的 if(!is_uploaded_file($file_arr['tmp_name'])){ return array('state'=>RESULT_FAILURE,'msg'=>'非法来源文件'); } /** 检查目录是否可写 */ if (!@is_writable($base_path.$savepath)) { return array('state'=>RESULT_FAILURE,'msg'=>'目录不可写'); } /*检查文件是否超过限制*/ if ($maxsize!= 0) { if ($file_arr['size'] > $maxsize) { return array('state'=>RESULT_FAILURE,'msg'=>'文件太大'); } } if(!in_array($type, $allow_type)){ return array('state'=>RESULT_FAILURE,'msg'=>'不允许该格式文件'); } if(move_uploaded_file($file_arr['tmp_name'],$img_path)){ switch($type){ case 'jpg': $im=imagecreatefromjpeg($img_path); break; case 'jpeg': $im=imagecreatefromjpeg($img_path); break; case 'gif': $im=imagecreatefromgif($img_path); break; case 'png': $im=imagecreatefrompng($img_path); break; default: return array('state'=>RESULT_FAILURE,'msg'=>'不允许该格式文件'); } $pic_width = imagesx($im); $pic_height = imagesy($im); if(($maxwidth && $pic_width > $maxwidth) || ($maxheight && $pic_height > $maxheight)) { if($maxwidth && $pic_width>$maxwidth) //原图宽度大于最大宽度 { $widthratio = $maxwidth/$pic_width; $resizewidth_tag = true; } if($maxheight && $pic_height>$maxheight) //原图高度度大于最大高度 { $heightratio = $maxheight/$pic_height; $resizeheight_tag = true; } if($resizewidth_tag && $resizeheight_tag) //如果新图片的宽度和高度都比原图小 { if($widthratio<$heightratio) //那个比较小就说明它的长度要长,就取哪条,以长边为准缩放保证图片不被压缩 $ratio = $widthratio; else $ratio = $heightratio; } if($resizewidth_tag && !$resizeheight_tag) $ratio = $widthratio; if($resizeheight_tag && !$resizewidth_tag) $ratio = $heightratio; $newwidth = $pic_width * $ratio; //原图的宽度*要缩放的比例 $newheight = $pic_height * $ratio; //原图高度*要缩放的比例 if(function_exists("imagecopyresampled")) { $newim = imagecreatetruecolor($newwidth,$newheight); //生成一张要生成的黑色背景图 ,比例为计算出来的新图片比例 imagecopyresampled($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height); //复制按比例缩放的原图到 ,新的黑色背景中。 } else { $newim = imagecreate($newwidth,$newheight); imagecopyresized($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height); } @imagejpeg($newim,$img_path); @imagedestroy($newim); } else { @imagejpeg($im,$img_path); } return array('state'=>RESULT_SUCCESS,'msg'=>$savepath.$file_name); }else{ return array('state'=>RESULT_FAILURE,'msg'=>'不知名错误'); } }
相关文章推荐
- php实现按指定大小等比缩放生成上传图片缩略图的方法
- php实现按指定大小等比缩放生成上传图片缩略图的方法
- php实现等比例不失真缩放上传图片的方法
- php实现按指定大小等比缩放生成上传图片缩略图的方法
- php实现等比例不失真缩放上传图片的方法
- php上传图片自动生成缩略图方法函数
- php缩放图片(根据宽高的等比例缩放)实例介绍
- php ckeditor上传图片文件名乱码解决方法
- 用php和imagemagick来处理图片文件的上传和缩放处理
- 6种php上传图片重命名的方法实例
- PHP Fckeditor上传文件(或图片)中文显示为乱码的解决方法
- php另类上传图片的方法(PHP用Socket上传图片)
- php ckeditor上传图片文件名乱码解决方法
- PHP设置图片文件上传大小的具体实现方法
- PHP上传真彩图片缩略图质量失真解决方法 推荐
- php图片缩放代码-按比例缩放或截取指定大小的缩略图 非常好用的一个方法
- 用php和imagemagick来处理图片文件的上传和缩放处理(转贴)
- 基于php上传图片重命名的6种解决方法的详细介绍
- php对上传图片进行缩放处理
- php GD库函数(保存不同大小的图片,即原图与缩放图片等)