1.图片处理img.do.php
<?php
//图片缩放
function thumb($simg,$dw,$dh){
//原图大小
$arr = getimagesize($simg);
$sw = $arr[0];
$sh = $arr[1];
$st = $arr[2];
$sm = $arr['mime'];
switch($st){
case 1:
$imagecreate = "imagecreatefromgif";
$imageout = "imagegif";
break;
case 2:
$imagecreate = "imagecreatefromjpeg";
$imageout = "imagejpeg";
break;
case 3:
$imagecreate = "imagecreatefrompng";
$imageout = "imagepng";
break;
} //over switch
//原图和目标图片资源
$simgr = $imagecreate($simg);
//等比例计算
if($sw/$dw>$sh/$dh){
$b = $sw/$dw;
}else{
$b = $sh/$dh;
}
$dw2 = floor($sw/$b);
$dh2 = floor($sh/$b);
//目标图片资源
$dimgr = imagecreatetruecolor($dw2,$dh2);
//开始缩放
imagecopyresampled($dimgr,$simgr,0,0,0,0,$dw2,$dh2,$sw,$sh);
//输出浏览器.保存到与原图一致的目录下
$dir = dirname($simg);
$file = basename($simg);
$save = $dir.'/'.'thumb_'.$file;
$imageout($dimgr,$save);
}
?>
2.页面端引用处理php
<?php
// 加载图片处理文件
require('../../public/common/img.do.php');
$goodsname = $_POST['goodsname'];
$price = $_POST['goodsprice'];
$sort = $_POST['goodsort'];
$shelf = $_POST['shelf'];
$brand_id = $_POST['brand_id'];
$src = $_FILES['img']['tmp_name'];
$name = $_FILES['img']['name'];
$ext = array_pop(explode('.', $name));
// $dst = '../../public/uploads'.time().mt_rand().'.'.$ext;
//文件名,以文件名创建目录
$fileDir = '../../public/uploads/'.$goodsname.'/';
if(!is_dir($fileDir)){
mkdir('../../public/uploads/'.$goodsname.'/');
}
//$dst = $fileDir.time().mt_rand().'.'.$ext; //放入随机数和时间作为图片文件名,改变了图片文件名
$dst = $fileDir.$name; //直接在文件夹下,存放文件原有的名称,不改变图片文件名
move_uploaded_file($src, $dst);//上传图片,并放在以商品名新建的文件夹下,下方可以压缩。
// if(move_uploaded_file($src, $dst)){
// //图片缩放200*200
// thumb($dst,200,200);
// //$img = basename($dst); //获得文件名
// }else{
// }
?>
获得文件名和路径信息插入数据库。完
补充:涉及中文目录
$dir = iconv("UTF-8", "GBK", "Public/bookcover");
if (!file_exists($dir)){
mkdir ($dir,0777,true);
echo '创建文件夹bookcover成功';
} else {
echo '需创建的文件夹bookcover已经存在';
}
iconv方法是为了防止中文乱码,保证可以创建识别中文目录,不用iconv方法格式的话,将无法创建中文目录
mkdir方法的第一个参数是要创建的目录路径,第二个参数是指创建目录的权限,在windows系统下该参数会被忽略,第三个参数是指是否创建多级目录,默认为false