【问题标题】:Javascript Convert a URL to a base64 Image [duplicate]Javascript将URL转换为base64图像[重复]
【发布时间】:2017-06-06 07:04:57
【问题描述】:

我正在尝试将图像 url 转换为 base64 图像。我找到了我正在尝试使用的this。

我有以下代码:

var imgUrl = 'https://www.google.de/images/srpr/logo11w.png';
let base64image = this.getBase64Image(imgUrl);
console.log(base64image);

和

public getBase64Image(imgUrl) {
    var img = new Image();
    img.src = imgUrl;
    var canvas = document.createElement("canvas");
    canvas.width = img.width;
    canvas.height = img.height;
    var ctx = canvas.getContext("2d");
    ctx.drawImage(img, 0, 0);
    var dataURL = canvas.toDataURL("image/png");
    return dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
}

但是,它会输出以下内容:

数据:,

我在控制台中收到以下错误:

异常:未捕获(承诺):SecurityError:无法在“HTMLCanvasElement”上执行“toDataURL”:可能无法导出受污染的画布。 错误:无法在“HTMLCanvasElement”上执行“toDataURL”:可能无法导出受污染的画布。

我的代码必须不正确。谁能告诉我如何将 url 转换为 base64 图像?

谢谢

更新

我在函数中添加了以下行:

img.crossOrigin = "Anonymous";

这消除了错误,但是,现在我得到以下信息:

数据:,

【问题讨论】:

  • 查看控制台上的错误消息 — 错误:无法在“HTMLCanvasElement”上执行“toDataURL”:可能无法导出受污染的画布。
  • 添加了错误信息。感谢您指出这一点。
  • 您将此标记为重复,它重复了哪个问题?
  • 问题顶部黄色大方框中提到的那个
  • Quentin,我通过设置 'crossOrigin'、'anonymous' 解决了错误消息,请参阅上面的更新。谢谢你。但是,它仍然无法解决我尝试创建 base64Image 的问题。

标签: javascript base64


【解决方案1】:

您可以改用 XHR 和 File Reader API,这更简洁,但仅限于 browser compatibility。

var imgxhr = new XMLHttpRequest();
    imgxhr.open( "GET", url );
    imgxhr.responseType = "blob";
    imgxhr.onload = function (){
        if ( imgxhr.status===200 ){
            reader.readAsDataURL(imgxhr.response);
        }
        else if ( imgxhr.status===404 ){
            // Error handle
        }
    };
var reader = new FileReader();
    reader.onloadend = function () {
        console.log(reader.result.length);
        // Code here
    };
imgxhr.send();

【讨论】:

  • 我正在构建一个 Ionic 移动应用程序。它会在那种环境下工作吗?
  • 这是否意味着它不能在 IE10 和 Safari 6 中运行?
  • @Richard 不幸的是,我不熟悉那个框架。
  • @Richard 根据this,它将在 IE 10 和 Safari 6 中运行
  • 好的,无论如何,谢谢,我想我需要寻找另一个解决方案。希望您的解决方案可以帮助其他人。
猜你喜欢
  • 2014-04-06
  • 1970-01-01
  • 2019-11-18
  • 1970-01-01
  • 1970-01-01
  • 2019-07-12
  • 1970-01-01
  • 2015-12-09
相关资源
最近更新 更多