首頁  >  文章  >  web前端  >  Javascript將圖片的絕對路徑轉換為base64編碼

Javascript將圖片的絕對路徑轉換為base64編碼

小云云
小云云原創
2018-01-13 09:04:526225瀏覽

本文主要介紹了Javascript將圖片的絕對路徑轉換為base64編碼的方法,小編覺得挺好的,現在分享給大家,也給大家做個參考。一起跟著小編過來看看吧。希望能幫助大家。

我們可以使用canvas.toDataURL的方法將圖片的絕對路徑轉換為base64編碼;在這我們引用的是淘寶首頁一張圖片如下:

程式碼如下:

var img = "https://img.alicdn.com/bao/uploaded/TB1qimQIpXXXXXbXFXXSutbFXXX.jpg";

我們如下寫程式碼:


function getBase64Image(img) {
    var canvas = document.createElement("canvas");
    canvas.width = img.width;
    canvas.height = img.height;
    var ctx = canvas.getContext("2d");
    ctx.drawImage(img, 0, 0, img.width, img.height);
    var ext = img.src.substring(img.src.lastIndexOf(".")+1).toLowerCase();
    var dataURL = canvas.toDataURL("image/"+ext);
    return dataURL;
}
var img = "https://img.alicdn.com/bao/uploaded/TB1qimQIpXXXXXbXFXXSutbFXXX.jpg";
var image = new Image();
image.src = img;
image.onload = function(){
  var base64 = getBase64Image(image);
  console.log(base64);
}

chrome 執行如下所示:

# #透過搜尋明白,我們使用的是淘寶伺服器上的一張圖片,在本地伺服器下訪問,結果出現圖片跨域的問題;為止,我們可以把圖片放在本地伺服器下即可解決上面的跨域問題;例如我現在將淘寶伺服器下的圖片保存在本地伺服器下;如下程式碼即可解決:



var img = "http://127.0.0.1/base64/1.jpg";
function getBase64Image(img) {
  var canvas = document.createElement("canvas");
  canvas.width = img.width;
  canvas.height = img.height;
  var ctx = canvas.getContext("2d");
  ctx.drawImage(img, 0, 0, img.width, img.height);
  var ext = img.src.substring(img.src.lastIndexOf(".")+1).toLowerCase();
      var dataURL = canvas.toDataURL("image/"+ext);
  return dataURL;
}
var image = new Image();
image.src = img;
image.onload = function(){
  var base64 = getBase64Image(image);
  console.log(base64);
}

但是有時我們想引用其他伺服器下的圖片該如何解決呢?我們可以使用下面這句話程式碼在chrome和firefox下生效,在目前safari6以下貌似不支援;如下程式碼:


##

image.crossOrigin = '';

所有程式碼如下:


var img = "https://img.alicdn.com/bao/uploaded/TB1qimQIpXXXXXbXFXXSutbFXXX.jpg";
//var img = "http://127.0.0.1/base64/1.jpg";
function getBase64Image(img) {
  var canvas = document.createElement("canvas");
  canvas.width = img.width;
  canvas.height = img.height;

  var ctx = canvas.getContext("2d");
  ctx.drawImage(img, 0, 0, img.width, img.height);
  var ext = img.src.substring(img.src.lastIndexOf(".")+1).toLowerCase();
  var dataURL = canvas.toDataURL("image/"+ext);
  return dataURL;
}
var image = new Image();
image.crossOrigin = '';
image.src = img;
image.onload = function(){
  var base64 = getBase64Image(image);
  console.log(base64);
}

如上程式碼在chrome和firefox下,經過測試生效,在safari目前不支援;


相關推薦:


html的絕對路徑和相對路徑怎麼使用

如何使用php中的dirname(__FILE__) 取得目前檔案的絕對路徑

#詳解相對路徑與絕對路徑的差異

#

以上是Javascript將圖片的絕對路徑轉換為base64編碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn