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