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


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目前不支持;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM