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 運(yùn)行如下所示:

通過搜索明白,我們使用的是淘寶服務(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);
}
但是有時(shí)候我們想引用其他服務(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)文章
JavaScript之iterable_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了JavaScript之iterable,遍歷Array可以采用下標(biāo)循環(huán),遍歷Map和Set就無法使用下標(biāo)。為了統(tǒng)一集合類型,ES6標(biāo)準(zhǔn)引入了新的iterable類型,Array、Map和Set都屬于iterable類型2017-06-06
javascript實(shí)現(xiàn)好看的可復(fù)用彈窗插件
這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)好看的可復(fù)用彈窗插件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05
用JavaScript實(shí)現(xiàn) 鐵甲無敵獎(jiǎng)門人 “開口中”猜數(shù)游戲
JavaScript在常人看來都是門出不了廳堂的小語言,僅管它沒有明星語言的閃耀,但至少網(wǎng)頁的閃耀還是需要它的,同時(shí)它是一門很實(shí)用的語言。2009-10-10
UniApp中Scroll-View設(shè)置占滿下方剩余高度的方法記錄
在使用uniapp開發(fā)項(xiàng)目過程中有時(shí)候會(huì)想讓一些組件占有屏幕剩余的高度,下面這篇文章主要給大家介紹了關(guān)于UniApp中Scroll-View設(shè)置占滿下方剩余高度的方法,需要的朋友可以參考下2023-04-04
Bootstrap網(wǎng)頁布局網(wǎng)格的實(shí)現(xiàn)
柵格就是網(wǎng)格,本文詳細(xì)的介紹了Bootstrap網(wǎng)頁布局網(wǎng)格的原理和實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07

