這篇文章主要介紹了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); }
上面是我整理給大家的,希望今後對大家有幫助。
相關文章:
#以上是在Javascript中如何將路徑轉換為base64編碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!