简体   繁体   English

将 base64 字符串转换为可用的 URL

[英]convert base64 string to usable URL

I have a string that was made using toDataURL() on my HTML canvas, creating an image.我在我的 HTML 画布上使用 toDataURL() 创建了一个字符串,创建了一个图像。 I'd like to be able to encode / decode that string so it can be used with window.open(string)我希望能够对该字符串进行编码/解码,以便它可以与 window.open(string) 一起使用

string looks like字符串看起来像

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAB4AAAAOfCAYAAAApbd6bAAAgAElEQVR4Xuzdfaxt6V0X8OHct5nplEHQUFobiJEWakwNiRKjmIqJBQShCS...

This is what ended up working for me, with src being the base64 string这最终对我有用, src 是 base64 字符串

  const openImg = () => {
    const base64ImageData = src;
    const contentType = 'image/png';
    const byteCharacters = atob(base64ImageData.substr(`data:${contentType};base64,`.length));
    const byteArrays = [];

    for (let offset = 0; offset < byteCharacters.length; offset += 1024) {
      const slice = byteCharacters.slice(offset, offset + 1024);

      const byteNumbers = new Array(slice.length);
      for (let i = 0; i < slice.length; i++) {
        byteNumbers[i] = slice.charCodeAt(i);
      }

      const byteArray = new Uint8Array(byteNumbers);

      byteArrays.push(byteArray);
    }
    const blob = new Blob(byteArrays, { type: contentType });
    const blobUrl = URL.createObjectURL(blob);

    window.open(blobUrl, '_blank');
  }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM