最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js實現把圖片的絕對路徑轉為base64字符串、blob對象再上傳

 更新時間:2016年12月29日 15:34:21   作者:webNick  
本文主要介紹了JavaScript把項目本地的圖片或者圖片的絕對路徑轉為base64字符串、blob對象再上傳的方法,具有一定的參考價值,需要的朋友一起來看下吧

主題:

JavaScript把項目本地的圖片或者圖片的絕對路徑轉為base64字符串、blob對象在上傳。

用處:

從本地選擇圖片上傳,如項目規(guī)定只能選擇本項目文件夾下的圖像上傳為頭像等。

主要思想:

使用canvas.toDataURL()方法將圖片的絕對路徑轉換為base64編碼.

具體用法:

在這我們引用淘寶服務器上的一張圖片舉例:

var imgSrc = "https://img.alicdn.com/bao/uploaded/TB1qimQIpXXXXXbXFXXSutbFXXX.jpg";
// var imgSrc = "img/1.jpg";
  function getBase64(img){//傳入圖片路徑,返回base64
  function getBase64Image(img,width,height) {//width、height調用時傳入具體像素值,控制大小 ,不傳則默認圖像大小
   var canvas = document.createElement("canvas");
   canvas.width = width ? width : img.width;
   canvas.height = height ? height : img.height;
 
   var ctx = canvas.getContext("2d");
   ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
   var dataURL = canvas.toDataURL();
   return dataURL;
  }
  var image = new Image();
  image.src = img;
  var deferred=$.Deferred();
  if(img){
   image.onload =function (){
   deferred.resolve(getBase64Image(image));//將base64傳給done上傳處理
   }
   return deferred.promise();//問題要讓onload完成后再return sessionStorage['imgTest']
  }
  }
  getBase64(imgSrc)
  .then(function(base64){
   console.log(base64);
  },function(err){
   console.log(err);
  });

此時在chrome測試,運行時會報錯!

原因:

我們使用的是淘寶服務器上的圖片,在本地服務器下訪問,結果出現圖片跨域的問題。

處理方案:

一、將圖片放在本地服務器

var imgSrc = "img/1.jpg";//本地項目文件夾下的圖片
  function getBase64(img){//傳入圖片路徑,返回base64
  function getBase64Image(img,width,height) {
   var canvas = document.createElement("canvas");
   canvas.width = width ? width : img.width;
   canvas.height = height ? height : img.height;
   var ctx = canvas.getContext("2d");
   ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
   var dataURL = canvas.toDataURL();
   return dataURL;
  }
  var image = new Image();
  image.src = img;
  var deferred=$.Deferred();
  if(img){
   image.onload =function (){
   deferred.resolve(getBase64Image(image));//將base64傳給done上傳處理
   }
   return deferred.promise();//問題要讓onload完成后再return sessionStorage['imgTest']
  }
  }
  getBase64(imgSrc)
  .then(function(base64){
   console.log(base64);
  },function(err){
   console.log(err);
  });

二、 跨域

想引用其他服務器下的圖片該如何解決呢?

我們可以使用下面這一句代碼解決跨域。

image.crossOrigin = '';

測試在chrome和firefox,ie9+下生效,在目前safari6以下貌似不支持。

<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <title>nick getBase64</title>
</head>
<body>
<div><img id="test" src="" alt=""/></div>
<script src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
 var imgSrc = "https://img.alicdn.com/bao/uploaded/TB1qimQIpXXXXXbXFXXSutbFXXX.jpg";
// var imgSrc = "img/1.jpg";
  function getBase64(img){//傳入圖片路徑,返回base64
  function getBase64Image(img,width,height) {//width、height調用時傳入具體像素值,控制大小 ,不傳則默認圖像大小
   var canvas = document.createElement("canvas");
   canvas.width = width ? width : img.width;
   canvas.height = height ? height : img.height;
 
   var ctx = canvas.getContext("2d");
   ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
   var dataURL = canvas.toDataURL();
   return dataURL;
  }
  var image = new Image();
  image.crossOrigin = '';
  image.src = img;
  var deferred=$.Deferred();
  if(img){
   image.onload =function (){
   deferred.resolve(getBase64Image(image));//將base64傳給done上傳處理
   }
   return deferred.promise();//問題要讓onload完成后再return sessionStorage['imgTest']
  }
  }
  getBase64(imgSrc)
  .then(function(base64){
   console.log(base64);
  },function(err){
   console.log(err);
  });
</script>
</body>
</html>

上面是本功能的完整代碼,親們,可以測試咯!

這樣就本地圖片和其他服務器上的圖片都可以處理了!

結語:

想要了解更多的有關上傳頭像功能,可參考《淺析上傳頭像示例及其注意事項

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!

相關文章

  • 在一個js文件里遠程調用jquery.js會在ie8下的一個奇怪問題

    在一個js文件里遠程調用jquery.js會在ie8下的一個奇怪問題

    這樣的腳本你在ie8下調用,在ie8地址欄下按下回車后調用jquery的對像、方法什么的沒有問題,但是刷新之后就有問題。就是刷新之后無論怎樣你要在地址欄按一下回車。
    2010-11-11
  • html+js實現簡單的計算器代碼(加減乘除)

    html+js實現簡單的計算器代碼(加減乘除)

    下面小編就為大家?guī)硪黄猦tml+js實現簡單的計算器代碼(加減乘除)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • 談一談javascript中繼承的多種方式

    談一談javascript中繼承的多種方式

    本文就和大家談一談javascript中的繼承,什么是繼承,繼承的作用,以及js繼承的實現代碼,感興趣的小伙伴們可以參考一下
    2016-02-02
  • 一個可以隨意添加多個序列的tag函數

    一個可以隨意添加多個序列的tag函數

    由于在沒有規(guī)劃好的情況下寫的這個代碼,寫的比較粗糙,也沒有添加注釋。 JavaScript代碼和HTML完全分離;可以隨意添加多個子div標簽,自動擴展
    2009-07-07
  • JavaScript必知必會(十) call apply bind的用法說明

    JavaScript必知必會(十) call apply bind的用法說明

    這篇文章主要介紹了JavaScript必知必會(十) call apply bind的用法說明 的相關資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • Bootstrap禁用響應式布局的實現方法

    Bootstrap禁用響應式布局的實現方法

    這篇文章主要介紹了Bootstrap禁用響應式布局的實現方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-03-03
  • JavaScript基于ChatGPT實現打字機消息回復

    JavaScript基于ChatGPT實現打字機消息回復

    ChatGPT 是一個基于深度學習的大型語言模型,處理自然語言需要大量的計算資源和時間,響應速度肯定比普通的讀數據庫要慢的多,本文介紹了ChatGPT打字機消息回復實現原理,感興趣的同學可以跟著小編一起學習
    2023-05-05
  • javascript中的異步調用機制

    javascript中的異步調用機制

    這篇文章主要介紹了javascript中的異步調用機制,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • 關于js數組去重的問題小結

    關于js數組去重的問題小結

    在項目開發(fā)過程中經常會遇到數組中包含很多重復的內容,即臟數據去臟的操作,本文著重講解了數組去重的幾種方法。需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01
  • js判斷空對象的實例(超簡單)

    js判斷空對象的實例(超簡單)

    下面小編就為大家?guī)硪黄猨s判斷空對象的實例(超簡單)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07

最新評論

高陵县| 大庆市| 富顺县| 仙游县| 云南省| 河曲县| 海兴县| 准格尔旗| 连平县| 江陵县| 磐安县| 青州市| 宁国市| 清徐县| 雅安市| 东安县| 徐汇区| 曲水县| 彭州市| 青阳县| 阳泉市| 习水县| 兴城市| 德江县| 平江县| 北川| 剑河县| 绥中县| 五指山市| 新蔡县| 岑巩县| 集安市| 凭祥市| 黄平县| 宜兰市| 永泰县| 荆州市| 略阳县| 峨山| 丰城市| 乌恰县|