Javascript將圖片的絕對路徑轉(zhuǎn)換為base64編碼的方法
我們可以使用canvas.toDataURL的方法將圖片的絕對路徑轉(zhuǎn)換為base64編碼;在這我們引用的是淘寶首頁一張圖片如下:
我們?nèi)缦戮帉懘a:
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 運行如下所示:
通過搜索明白,我們使用的是淘寶服務(wù)器上的一張圖片,在本地服務(wù)器下訪問,結(jié)果出現(xiàn)圖片跨域的問題;為止,我們可以把圖片放在本地服務(wù)器下即可解決上面的跨域問題;比如我現(xiàn)在將淘寶服務(wù)器下的圖片保存在本地服務(wù)器下;如下代碼即可解決:
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); }
但是有時候我們想引用其他服務(wù)器下的圖片該如何解決呢?我們可以使用下面這一句代碼在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下,經(jīng)測試生效,在safari目前不支持;
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
js 動態(tài)給元素添加、移除事件的實現(xiàn)方法
下面小編就為大家?guī)硪黄猨s 動態(tài)給元素添加、移除事件的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-07-07Highslide.js是一款基于js實現(xiàn)的網(wǎng)頁中圖片展示插件
這篇文章主要介紹了Highslide.js是一款基于js實現(xiàn)的網(wǎng)頁中圖片預(yù)覽查看工具,需要的朋友可以參考下2007-05-05FireFox與IE 下js兼容觸發(fā)click事件的代碼
FireFox與IE 下js兼容觸發(fā)click事件 ,對于需要兼容這兩者的朋友,就需要參考下下面的代碼了2008-11-11