TypeScript将图像URL转换为base64编码的字符串失败 [英] Typescript convert an image url to base64 encoded string fails

查看:866
本文介绍了TypeScript将图像URL转换为base64编码的字符串失败的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想根据给定的URL将图像转换为base 64格式.

I would like to convert an image to base 64 format, given its URL.

下面是我要达到的目的的方法:

Below is my approach in order to achieve that:

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);
    var dataURL = canvas.toDataURL("image/png");
    return dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
}

// Using the function above to do the conversion (an image to base 64 format from its URL);
this.getBase64Image('https://live.mystocks.co.ke/research/images/bamburi.jpg');

失败.

我在做什么错,我该如何解决?

What am I doing wrong and how can I achieve it?

推荐答案

您无法从字符串中获取图像信息,需要首先加载该图像,因此需要返回ObservablePromise:

You cannot get image information from a string, you need to load that image first so you'll need to return an Observable or a Promise:

getBase64Image(img:HTMLImageElement) {
  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,/, "");
}



getBase64ImageFromURL(url:string) {
  return Observable.create((observer:Observer<string>) => {
    let img = new Image();
    img.src = url;
    if (!img.complete) {
      img.onload = () => {
        observer.next(getBase64Image(img));
        observer.complete();
      };
      img.onerror = (err) => {
        observer.error(err);
      };
    } else {
      observer.next(getBase64Image(img));
      observer.complete();
    }
  });
}

这篇关于TypeScript将图像URL转换为base64编码的字符串失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆