亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

php處理多圖上傳壓縮代碼功能

2024-05-05 00:04:09
字體:
來源:轉載
供稿:網友

網上看了一些資料,關于處理圖片壓縮的,找到的大部分是單圖壓縮的,要么是單前端或者后端的,所以就自己整了下前后端壓縮,并支持多圖的壓縮圖片實例。代碼有點多,直接復制到編輯器看會比較清楚

1、先創建的一個簡單的上傳頁面upload.php。先通過前端代碼壓縮圖片,直接上代碼

<!DOCTYPE html><html><head>  <meta charset="UTF-8">  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no, minimal-ui">  <title>實名驗證</title>  <script type="text/javascript">    /*    三個參數    file:一個是文件(類型是圖片格式),    w:一個是文件壓縮的后寬度,寬度越小,字節越小    objDiv:一個是容器或者回調函數    photoCompress()     */    function photoCompress(file,w,objDiv){      var ready=new FileReader();      /*開始讀取指定的Blob對象或File對象中的內容. 當讀取操作完成時,readyState屬性的值會成為DONE,如果設置了onloadend事件處理程序,則調用之.同時,result屬性中將包含一個data: URL格式的字符串以表示所讀取文件的內容.*/      ready.readAsDataURL(file);      ready.onload=function(){        var re=this.result;        canvasDataURL(re,w,objDiv)      }    }    function canvasDataURL(path, obj, callback){      var img = new Image();      img.src = path;      img.onload = function(){        var that = this;        // 默認按比例壓縮        var w = that.width,          h = that.height,          scale = w / h;        w = obj.width || w;        h = obj.height || (w / scale);        var quality = 0.7; // 默認圖片質量為0.7        //生成canvas        var canvas = document.createElement('canvas');        var ctx = canvas.getContext('2d');        // 創建屬性節點        var anw = document.createAttribute("width");        anw.nodeValue = w;        var anh = document.createAttribute("height");        anh.nodeValue = h;        canvas.setAttributeNode(anw);        canvas.setAttributeNode(anh);        ctx.drawImage(that, 0, 0, w, h);        // 圖像質量        if(obj.quality && obj.quality <= 1 && obj.quality > 0){          quality = obj.quality;        }        // quality值越小,所繪制出的圖像越模糊        var base64 = canvas.toDataURL('image/jpeg', quality);        // 回調函數返回base64的值        callback(base64);      }    }    /**     * 將以base64的圖片url數據轉換為Blob     * @param urlData     * 用url方式表示的base64圖片數據     */    function convertBase64UrlToBlob(urlData){      var arr = urlData.split(','), mime = arr[0].match(/:(.*?);/)[1],        bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);      while(n--){        u8arr[n] = bstr.charCodeAt(n);      }      return new Blob([u8arr], {type:mime});    }    var xhr;    //上傳文件方法    function uploadClick() {      document.getElementsByClassName("uploadbtn")[0].value = '上傳中...';      document.getElementsByClassName("uploadbtn")[0].disabled=true;       var obj = document.getElementsByClassName("myfile");      for(var i=0;i<2;i++){        UploadFile(obj[i].files[0],'file'+i);      }    }    function UploadFile(fileObj,filed){      var shopid = document.getElementById('shopid').value;      var adminid = document.getElementById('adminid').value;      var url = "newshimingupload.php"; // 接收上傳文件的后臺地址       var form = new FormData(); // FormData 對象      if(fileObj.size/1024 > 100) { //大于100k,進行壓縮上傳        photoCompress(fileObj, {          quality: 0.2        }, function(base64Codes){          //console.log("壓縮后:" + base.length / 1024 + " " + base);          var bl = convertBase64UrlToBlob(base64Codes);          form.append("file", bl, "file_"+Date.parse(new Date())+".jpg"); // 文件對象          form.append("shopid", shopid); // 文件對象          form.append("adminid", adminid); // 文件對象          form.append("filed", filed); // 文件對象          xhr = new XMLHttpRequest(); // XMLHttpRequest 對象          xhr.open("post", url, false); //post方式,url為服務器請求地址,true 該參數規定請求是否異步處理。          xhr.onload = uploadComplete; //請求完成          xhr.onerror = uploadFailed; //請求失敗          // xhr.upload.onprogress = progressFunction;//【上傳進度調用方法實現】          xhr.upload.onloadstart = function(){//上傳開始執行方法            ot = new Date().getTime();  //設置上傳開始時間            oloaded = 0;//設置上傳開始時,以上傳的文件大小為0          };          xhr.send(form); //開始上傳,發送form數據        });      }else{ //小于等于1M 原圖上傳        form.append("file", fileObj); // 文件對象        form.append("shopid", shopid); // 文件對象        form.append("adminid", adminid); // 文件對象        form.append("filed", filed); // 文件對象        xhr = new XMLHttpRequest(); // XMLHttpRequest 對象        xhr.open("post", url, false); //post方式,url為服務器請求地址,true 該參數規定請求是否異步處理。        xhr.onload = uploadComplete; //請求完成        xhr.onerror = uploadFailed; //請求失敗        xhr.upload.onloadstart = function(){//上傳開始執行方法          ot = new Date().getTime();  //設置上傳開始時間          oloaded = 0;//設置上傳開始時,以上傳的文件大小為0        };        xhr.send(form); //開始上傳,發送form數據      }    }    //上傳成功響應    function uploadComplete(evt) {      //服務斷接收完文件返回的結果      var data = JSON.parse(evt.target.responseText);      console.log(data);      if(data.status){        alert(data.msg);        if(data.msg == '門店照上傳成功'){          window.location.href = "/dd_admin/index.php";        }      }    }    //上傳失敗    function uploadFailed(evt) {      alert("網絡不穩定,請重新上傳!");    }  </script></head><body>  <style type="text/css">    .main{text-align: center;padding-top: 50px;}    .main .myfile{margin-bottom: 15px;}  </style><div class="main">  營業執照:  <input type="file" class="myfile" id="file1" name="file1" accept="image/x-png, image/jpg, image/jpeg, image/gif"/><br>  門店照:  <input type="file" class="myfile" id="file2" name="file2" accept="image/x-png, image/jpg, image/jpeg, image/gif"/><br>  <input type="hidden" id="shopid" name="shopid" value="<?php echo $_GET['shopid']; ?>" maxlength="15">  <input type="hidden" id="adminid" name="adminid" value="<?php echo $_GET['adminid']; ?>" maxlength="15">  <input style="margin-top: 25px;" class="uploadbtn" type="button" onclick="uploadClick()" value="上傳" /><br></div></body></html>2、前端圖片壓縮后,請求到自定義的接口upload_deal.php.代碼如下<?phprequire_once('public_func.php');  actionUpload('uploads/','file'); //參數分別代表圖片存儲的路徑和上傳的文件名}3、在第二部引入public_func.php,這塊代碼主要是對后端處理圖片壓縮function actionUpload($path = '/uploads/',$filename='myFile')  {    // $path = 'uploads/';  //圖片存放根目錄 根據自己項目路徑而定    $file = $_FILES[$filename]['name'];    $folder = $path.date('Ymd')."/";    $pre = rand(999,9999).time();    $ext = strrchr($file,'.');    $newName = $pre.$ext;    $out = array(      'msg'=>'',      'status'=>'error',      'img_url'=>''    );    if(!is_dir($folder))    {      if(!mkdir($folder, 0777, true)){        $out['msg'] = '圖片目錄創建失?。?#39;;        echo json_encode($out);        exit;      }    }    $im = $_FILES[$filename]['tmp_name']; //上傳圖片資源    $maxwidth="1056"; //設置圖片的最大寬度    $maxheight="500"; //設置圖片的最大高度    $imgname = $folder.$newName; //圖片存放路徑 根據自己圖片路徑而定    $filetype=$_FILES[$filename]['type'];//圖片類型    $result = thumbImage($im,$maxwidth,$maxheight,$imgname,$filetype);    if($result){      $out['msg'] = '圖片上傳成功';      $out['status'] = 'success';      $out['img_url'] = $folder.$newName;    }else{      $out['msg'] = '圖片上傳失敗';    }    return json_encode($out);    exit;  }  //壓縮圖片  function thumbImage($im,$maxwidth,$maxheight,$name,$filetype)  {    switch ($filetype) {         case 'image/pjpeg':         case 'image/jpeg':           $im = imagecreatefromjpeg($im);  //PHP圖片處理系統函數        break;         case 'image/gif':           $im = imagecreatefromgif($im);          break;         case 'image/png':           $im = imagecreatefrompng($im);          break;      case 'image/wbmp':           $im = imagecreatefromwbmp($im);          break;           }     $resizewidth_tag = $resizeheight_tag = false;    $pic_width = imagesx($im);    $pic_height = imagesy($im);    if(($maxwidth && $pic_width > $maxwidth) || ($maxheight && $pic_height > $maxheight))    {  $resizewidth_tag = $resizeheight_tag = false;      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);//PHP圖片處理系統函數        imagecopyresampled($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);//PHP圖片處理系統函數      }      else      {        $newim = imagecreate($newwidth,$newheight);        imagecopyresized($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);      }      switch ($filetype) {           case 'image/pjpeg' :           case 'image/jpeg' :             $result = imagejpeg($newim,$name);            break;           case 'image/gif' :             $result = imagegif($newim,$name);            break;           case 'image/png' :             $result = imagepng($newim,$name);            break;        case 'image/wbmp' :             $result = imagewbmp($newim,$name);            break;             }       imagedestroy($newim);    }    else    {      switch ($filetype) {           case 'image/pjpeg' :           case 'image/jpeg' :             $result = imagejpeg($im,$name);            break;           case 'image/gif' :             $result = imagegif($im,$name);            break;           case 'image/png' :             $result = imagepng($im,$name);            break;        case 'image/wbmp' :             $result = imagewbmp($im,$name);            break;             }    }    return $result;   }

總結

以上所述是小編給大家介紹的php處理多圖上傳壓縮代碼功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
午夜精品福利电影| 亚洲国产欧美日韩精品| 亚洲美女精品成人在线视频| 国模精品视频一区二区| 黄色成人av在线| 久久久久久网址| 成人精品aaaa网站| 两个人的视频www国产精品| 国产成人精品一区二区在线| 日韩专区在线播放| 91成人在线视频| 国产精品r级在线| 91sa在线看| 欧美肥老妇视频| 久久人91精品久久久久久不卡| 国产欧美 在线欧美| 欧美黄色免费网站| 丝袜一区二区三区| 欧美大片在线免费观看| 亚洲国产成人久久| 91丝袜美腿美女视频网站| 国产精品久久久久久久电影| 亚洲色图17p| 色婷婷亚洲mv天堂mv在影片| 亚洲精品www久久久| 色婷婷综合成人av| 日韩av网站在线| 久久精品这里热有精品| 国产suv精品一区二区三区88区| 国产精品成人v| 欧美成人手机在线| 精品国产一区二区三区在线观看| 亚洲精品电影在线观看| 国产精品视频精品视频| 日本久久久久亚洲中字幕| 黄色一区二区在线观看| 欧美性生交xxxxx久久久| 久久99视频精品| 久久九九国产精品怡红院| 在线精品国产成人综合| 97超碰蝌蚪网人人做人人爽| 成人在线中文字幕| 欧美激情18p| 亚洲精品99999| 日韩精品免费观看| 亚洲系列中文字幕| 91精品国产99久久久久久| 亚洲天堂av在线免费观看| 91香蕉嫩草神马影院在线观看| 日韩精品中文字幕视频在线| 亚洲欧美在线x视频| 91久久在线观看| 欧美性猛交xxxx黑人| 亚洲色图色老头| 曰本色欧美视频在线| 久久精品国产一区二区电影| 日韩成人xxxx| 8050国产精品久久久久久| 亚洲精品视频二区| 色综合久综合久久综合久鬼88| 亚洲精品美女视频| 国产视频综合在线| 国产精品日韩欧美大师| 国产精品爱久久久久久久| 久久99亚洲热视| 欧美黑人xxxx| 欧美成人精品三级在线观看| 欧美成人性生活| 国产日韩综合一区二区性色av| 色婷婷亚洲mv天堂mv在影片| 日韩在线观看精品| 亚洲自拍小视频免费观看| 日韩av片永久免费网站| 欧美精品在线免费播放| 色综合91久久精品中文字幕| 97在线视频免费观看| 51ⅴ精品国产91久久久久久| 亚洲国产精品国自产拍av秋霞| 欧美日韩中文在线| 色视频www在线播放国产成人| 日韩在线播放av| 日韩在线视频观看正片免费网站| 国内免费久久久久久久久久久| 久久久久北条麻妃免费看| 亚洲一区二区三区乱码aⅴ蜜桃女| 91国产中文字幕| 欧美性感美女h网站在线观看免费| 中文字幕国产亚洲2019| 国产精品午夜一区二区欲梦| 欧美剧在线观看| 韩曰欧美视频免费观看| 欧美极品美女视频网站在线观看免费| 亚洲人成电影在线播放| 夜夜躁日日躁狠狠久久88av| 亚洲精品美女在线观看| www国产91| 亚洲综合视频1区| 中日韩美女免费视频网站在线观看| 欧美国产视频一区二区| 国产精品第一页在线| 久久久久久国产三级电影| 亚洲区免费影片| 亚洲国产精品成人va在线观看| 国产精品美女999| 国产视频精品一区二区三区| 国产日本欧美一区二区三区在线| 久久久久中文字幕2018| 亚洲石原莉奈一区二区在线观看| 久久免费成人精品视频| 国产成人一区二区| 欧美日韩在线免费观看| 久久精品国产综合| 欧美成人激情在线| 国产999精品| 欧美激情18p| 国产视频丨精品|在线观看| 欧美亚洲成人精品| 亚洲视频电影图片偷拍一区| 欧美激情一级欧美精品| 日韩精品免费在线视频观看| 欧洲一区二区视频| 欧美有码在线观看| 欧美视频第一页| 亚洲精品第一国产综合精品| 国产精品美女主播在线观看纯欲| 一区二区欧美久久| 日韩在线视频免费观看高清中文| 亚洲jizzjizz日本少妇| 国产成人一区二区三区小说| 日韩精品视频免费专区在线播放| 亚洲黄色av网站| 国产精品国语对白| 国产精品99久久久久久人| 亚洲丝袜av一区| 亚洲欧美国产精品va在线观看| 97免费在线视频| 国产91色在线免费| 国产精品久久久久久久久| 亚洲欧美日韩爽爽影院| 亚洲bt天天射| 国产91精品久久久久久| 成人h视频在线| 日av在线播放中文不卡| 91亚洲va在线va天堂va国| 日韩在线视频观看正片免费网站| 精品一区精品二区| 97久久久免费福利网址| 国产伊人精品在线| 中文字幕在线看视频国产欧美| 成人网在线免费看| 91黄色8090| 亚洲成人性视频| 国产精品日韩电影| 亚洲成人av片在线观看| 欧美午夜片欧美片在线观看| 成人网欧美在线视频| 欧美插天视频在线播放| 久久99久久99精品中文字幕| 欧日韩不卡在线视频| 91av在线视频观看| 欧美日韩国产丝袜另类| 草民午夜欧美限制a级福利片| 91国产高清在线| 不卡中文字幕av|