PHP 上傳圖片并壓縮方法
使用到三個(gè)文件
connect.php:連接數(shù)據(jù)庫用 test_upload.php:執(zhí)行SQL語句用 upload_img.php:上傳圖片并壓縮用三個(gè)文件代碼如下:
connect.php
<?php$db_host = ’’;$db_user = ’’;$db_psw = ’’;$db_name = ’’;$db_port = ’’;$sqlconn=new mysqli($db_host,$db_user,$db_psw,$db_name);$q='set names utf8;';$result=$sqlconn->query($q);if (mysqli_connect_errno()) {printf('Connect failed: %sn', mysqli_connect_error());exit();}?>
<p><b>test_upload.php</b></p><?phprequire ('connect.php');require ('upload_img.php');$real_img=$uploadfile; $small_img=$uploadfile_resize;$insert_sql = 'insert into img (real_img,small_img) values (?,?)';$result = $sqlconn -> prepare($insert_sql);$result -> bind_param('ss', $real_img,$small_img);$result -> execute();?>
upload_img.php
<?php //設(shè)置文件保存目錄$uploaddir = 'upfiles/'; //設(shè)置允許上傳文件的類型$type=array('jpg','gif','bmp','jpeg','png'); //獲取文件后綴名函數(shù) function fileext($filename) { return substr(strrchr($filename, ’.’), 1); } //生成隨機(jī)文件名函數(shù) function random($length) { $hash = ’CR-’; $chars = ’ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz’; $max = strlen($chars) - 1; mt_srand((double)microtime() * 1000000); for($i = 0; $i < $length; $i++) { $hash .= $chars[mt_rand(0, $max)]; } return $hash; } $a=strtolower(fileext($_FILES[’filename’][’name’])); //判斷文件類型 if(!in_array(strtolower(fileext($_FILES[’filename’][’name’])),$type)) { $text=implode(',',$type); $ret_code=3;//文件類型錯(cuò)誤 $page_result=$text; $retArray = array(’ret_code’ => $ret_code,’page_result’=>$page_result); $retJson = json_encode($retArray); echo $retJson; return;} //生成目標(biāo)文件的文件名 else{ $filename=explode('.',$_FILES[’filename’][’name’]); do { $filename[0]=random(10); //設(shè)置隨機(jī)數(shù)長度 $name=implode('.',$filename); //$name1=$name.'.Mcncc'; $uploadfile=$uploaddir.$name; } while(file_exists($uploadfile)); if (move_uploaded_file($_FILES[’filename’][’tmp_name’],$uploadfile)) { if(is_uploaded_file($_FILES[’filename’][’tmp_name’])) { $ret_code=1;//上傳失敗} else {//上傳成功$ret_code=0; }} $retArray = array(’ret_code’ => $ret_code);$retJson = json_encode($retArray);echo $retJson;}//壓縮圖片$uploaddir_resize='upfiles_resize/';$uploadfile_resize=$uploaddir_resize.$name;//$pic_width_max=120;//$pic_height_max=90;//以上與下面段注釋可以聯(lián)合使用,可以使圖片根據(jù)計(jì)算出來的比例壓縮$file_type=$_FILES['filename'][’type’];function ResizeImage($uploadfile,$maxwidth,$maxheight,$name){ //取得當(dāng)前圖片大小 $width = imagesx($uploadfile); $height = imagesy($uploadfile); $i=0.5; //生成縮略圖的大小 if(($width > $maxwidth) || ($height > $maxheight)) {/*$widthratio = $maxwidth/$width;$heightratio = $maxheight/$height;if($widthratio < $heightratio){ $ratio = $widthratio;}else{ $ratio = $heightratio;}$newwidth = $width * $ratio;$newheight = $height * $ratio;*/$newwidth = $width * $i;$newheight = $height * $i;if(function_exists('imagecopyresampled')){ $uploaddir_resize = imagecreatetruecolor($newwidth, $newheight); imagecopyresampled($uploaddir_resize, $uploadfile, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);}else{ $uploaddir_resize = imagecreate($newwidth, $newheight); imagecopyresized($uploaddir_resize, $uploadfile, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);}ImageJpeg ($uploaddir_resize,$name);ImageDestroy ($uploaddir_resize); } else {ImageJpeg ($uploadfile,$name); }}if($_FILES['filename'][’size’]){ if($file_type == 'image/pjpeg'||$file_type == 'image/jpg'|$file_type == 'image/jpeg') {//$im = imagecreatefromjpeg($_FILES[$upload_input_name][’tmp_name’]);$im = imagecreatefromjpeg($uploadfile); } elseif($file_type == 'image/x-png') {//$im = imagecreatefrompng($_FILES[$upload_input_name][’tmp_name’]);$im = imagecreatefromjpeg($uploadfile); } elseif($file_type == 'image/gif') {//$im = imagecreatefromgif($_FILES[$upload_input_name][’tmp_name’]);$im = imagecreatefromjpeg($uploadfile); } else//默認(rèn)jpg {$im = imagecreatefromjpeg($uploadfile); } if($im) {ResizeImage($im,$pic_width_max,$pic_height_max,$uploadfile_resize); ImageDestroy ($im); }} ?>
請(qǐng)按照現(xiàn)實(shí)情況更改connect.php,test_upload.php中對(duì)應(yīng)的信息。
相關(guān)文章:
1. asp讀取xml文件和記數(shù)2. PHP實(shí)現(xiàn)基本留言板功能原理與步驟詳解3. 每日六道java新手入門面試題,通往自由的道路第二天4. vue 驗(yàn)證兩次輸入的密碼是否一致的方法示例5. python利用opencv實(shí)現(xiàn)顏色檢測(cè)6. CSS自定義滾動(dòng)條樣式案例詳解7. 讓你的PHP同時(shí)支持GIF、png、JPEG8. 多個(gè)SpringBoot項(xiàng)目采用redis實(shí)現(xiàn)Session共享功能9. 簡體中文轉(zhuǎn)換為繁體中文的PHP函數(shù)10. JavaScript快速實(shí)現(xiàn)一個(gè)顏色選擇器
