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)文章
js 動態(tài)給元素添加、移除事件的實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄猨s 動態(tài)給元素添加、移除事件的實(shí)現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-07-07使用JavaScript輕松實(shí)現(xiàn)拖拽功能
這篇文章主要介紹了使用JavaScript輕松實(shí)現(xiàn)拖拽功能,讓你的網(wǎng)頁動起來,文中通過代碼示例講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-06-06js控制一個按鈕是否可點(diǎn)擊(可使用)disabled的實(shí)例
下面小編就為大家?guī)硪黄猨s控制一個按鈕是否可點(diǎn)擊(可使用)disabled的實(shí)例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02Highslide.js是一款基于js實(shí)現(xiàn)的網(wǎng)頁中圖片展示插件
這篇文章主要介紹了Highslide.js是一款基于js實(shí)現(xiàn)的網(wǎng)頁中圖片預(yù)覽查看工具,需要的朋友可以參考下2007-05-05js實(shí)現(xiàn)隨機(jī)數(shù)小游戲
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)隨機(jī)數(shù)小游戲,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06FireFox與IE 下js兼容觸發(fā)click事件的代碼
FireFox與IE 下js兼容觸發(fā)click事件 ,對于需要兼容這兩者的朋友,就需要參考下下面的代碼了2008-11-11微信小程序多表聯(lián)合查詢的實(shí)現(xiàn)詳解
小程序設(shè)計(jì)中,通常會根據(jù)業(yè)務(wù)來做多表的拆分,多表拆分一般是根據(jù)業(yè)務(wù)的特點(diǎn)進(jìn)行拆分。比如我們在文章關(guān)注的業(yè)務(wù)中,會將文章和關(guān)注信息拆分成一對多的表關(guān)系。初學(xué)者可能對一對一、一對多、多對多的設(shè)計(jì)概念不是特別清楚2022-08-08