簡體   English   中英

Javascript-可以對遠程映像進行base64嗎?

[英]Javascript - Is it possible to base64 a remote image?

我有以下

的HTML

<img id="preview1" crossorigin="anonymous" src="http://www.gravatar.com/avatar/0e39d18b89822d1d9871e0d1bc839d06?s=128&d=identicon&r=PG">

JS

var img = document.getElementById("preview1");
var canvas = document.createElement("canvas");
canvas.width = img.width;
canvas.height = img.width;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0);
var dataURL = canvas.toDataURL("image/png");
var result = dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
console.log(result)

由於某種原因,當我將result (base64)粘貼到img src它什么也沒有顯示。 另外,當我將result (base64)粘貼為url時,它什么也沒有顯示。

當我使用input="file"並使用FileReader()獲取文件時。 它工作正常。

這是獲取遠程文件並將其轉換為可工作的base64的更好方法嗎?

編輯:該代碼波紋管將與遠程圖像工作。 抱歉,正在運行帶有“ --disable-web-security”標志的Chrome。

我用您想要的工作版本制作了一個簡單的JsFiddle

function getBase64Image(img) {
    // Create an empty canvas element
    var canvas = document.createElement("canvas");
    canvas.width = img.width;
    canvas.height = img.height;

    // Copy the image contents to the canvas
    var ctx = canvas.getContext("2d");
    ctx.drawImage(img, 0, 0);

    // Get the data-URL formatted image
    // Firefox supports PNG and JPEG. You could check img.src to
    // guess the original format, but be aware the using "image/jpg"
    // will re-encode the image.
    return canvas.toDataURL("image/png");
}

var im = new Image();
im.onload = function(ev) {
    var im = ev.target;
    var img = document.getElementById("preview1");
    img.src = getBase64Image(im);
}
im.src = "http://www.gravatar.com/avatar/0e39d18b89822d1d9871e0d1bc839d06?s=128&d=identicon&r=PG"

哦,我從另一個答案中無恥地復制了getBase64Image方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM