91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么通過js實現壓縮圖片上傳功能

發布時間:2021-04-19 09:52:25 來源:億速云 閱讀:227 作者:小新 欄目:web開發

這篇文章給大家分享的是有關怎么通過js實現壓縮圖片上傳功能的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

大概的流程就是

  • 點擊file選擇圖片

  • js將圖片解讀出base64編碼,然后通過js將base64編碼轉為壓縮后的base64

  • 然后通過ajax或者form把壓縮后的base64編碼提交到服務器(php)

  • 然后php將base64寫入文件

html

<!-- 首先引入jquery!!!!!!這里沒有引入 -->


<img src="/Uploads/verifyinfo/cardz.png" >
<input id="cardz" name="cardz" class="weui-uploader__input" type="file" accept="image/*" multiple="">
<input type="hidden" id="cardzbase" name="cardzbase">


<script>
 $(function(){
  $("input[type=file]").on('change', function(){

   var filePath = $(this).val(),     //獲取到input的value,里面是文件的路徑
       fileFormat = filePath.substring(filePath.lastIndexOf(".")).toLowerCase(),
       fileObj = document.getElementById($(this).attr('id')).files[0]; //上傳文件的對象,要這樣寫才行,用jquery寫法獲取不到對象

   var imgBase64str = '';   //存儲圖片的imgBase64
   // 檢查是否是圖片
   if( !fileFormat.match(/.png|.jpg|.jpeg/) ) {
    alert('上傳錯誤,文件格式必須為:png/jpg/jpeg');
    return;
   }
   var that = this;
   // 調用函數,對圖片進行壓縮
   compress(fileObj,function(imgBase64){
    imgBase64str = imgBase64;//存儲轉換后的base64編碼

    var reader = new FileReader();
    var img = $(that).prev("img")
    file = that.files[0]
    reader.addEventListener("load", function () {
     img.attr("src",imgBase64str);
     $("#"+$(that).attr('id')+"base").val(imgBase64str);
    }, false);
    reader.readAsDataURL(file)
   });



  })
  $("#uploadcard").on("click", function(){
   var cardzbase = $("#cardzbase").val();
   if (cardzbase.length<=0) {
    $.toast("請添加正面照");
    return;
   }
   $.post(
    "php路徑",
    {
     cardzbase:cardzbase
    },
    function (data) {
     alert(data.msg);
    }
   );


  });
 })
 // 對圖片進行壓縮
 function compress(fileObj, callback){
  if ( typeof (FileReader) === 'undefined') {
   console.log("當前瀏覽器內核不支持base64圖標壓縮");
   //調用上傳方式不壓縮
   directTurnIntoBase64(fileObj,callback);
  } else {
   var reader = new FileReader();
   reader.onload = function (e) { //要先確保圖片完整獲取到,這是個異步事件


    var image = new Image();
    image.src=e.target.result;
    image.onload = function(){
     square = 0.2,  //定義畫布的大小,也就是圖片壓縮之后的像素
         canvas = document.createElement('canvas'), //創建canvas元素
         context = canvas.getContext('2d'),
         imageWidth = Math.round(square*image.width),  //壓縮圖片的大小
         imageHeight = Math.round(square*image.height),
         data = '';

     canvas.width = imageWidth;
     canvas.height = imageHeight;
     context.clearRect(0, 0, imageWidth, imageHeight); //在給定矩形內清空一個矩形
     context.drawImage(this, 0, 0, imageWidth, imageHeight);
     var data = canvas.toDataURL('image/jpeg',0.6);
     //壓縮完成執行回調

     callback(data);
    };
   };
   reader.readAsDataURL(fileObj);

  }
 }
 // 不對圖片進行壓縮,直接轉成base64
 function directTurnIntoBase64(fileObj,callback){
  var r = new FileReader();
  // 轉成base64
  r.onload = function(){
   //變成字符串
   imgBase64 = r.result;
   //console.log(imgBase64);
   callback(imgBase64);
  }
  r.readAsDataURL(fileObj);  //轉成Base64格式
 }
</script>

php

<?php
/**
   * [將Base64圖片轉換為本地圖片并保存]
   * @param $base64_image_content [要保存的Base64]
   * @param $path [要保存的路徑]
   * @return bool|string
   */
  public function base64_image_content($base64_image_content,$path){
    //匹配出圖片的格式
    if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_image_content, $result)){
      $type = $result[2];
      //生成文件名
      $file_name = random_str(10).".{$type}";
      //路徑和文件名拼接
      $local_file_url = $path.$file_name;
      if (file_put_contents($local_file_url, base64_decode(str_replace($result[1], '', $base64_image_content)))){
        return array("filename"=>$file_name,"path"=>$path,"filepath"=>$local_file_url);
      }else{
        return false;
      }
    }else{
      return false;
    }
  }

  public function uploadm()
  {
    $da['status'] = 0;
    if (IS_POST) {
      $infoz = I("post.cardzbase");
      if (!$infoz || !$infof) {
        // 上傳錯誤提示錯誤信息
//        $this->error($upload->getError());
        $da['msg'] = "上傳異常";
      } else {
        $infoz_info = $this->base64_image_content($infoz,"Uploads/verifyinfo/");
        if($infof_info==false){
          $da['msg'] = "上傳失敗";
        }else{
          //自己的業務...
        }
      }
    }else{
      $da['msg'] = "非法請求";
    }
    $this->ajaxReturn($da);
  }

感謝各位的閱讀!關于“怎么通過js實現壓縮圖片上傳功能”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

js
AI

普安县| 台北市| 古浪县| 分宜县| 龙南县| 西宁市| 宁德市| 莎车县| 铁岭市| 龙泉市| 庄浪县| 沿河| 丰城市| 水城县| 万全县| 吉林省| 淮南市| 中山市| 隆尧县| 长丰县| 庆元县| 长治县| 葫芦岛市| 仙居县| 北宁市| 斗六市| 阜平县| 宁蒗| 仁寿县| 老河口市| 屏南县| 新乐市| 水城县| 浮梁县| 陆川县| 兰溪市| 贞丰县| 巴马| 和平区| 南乐县| 平顺县|