angular - Hur kan jag konvertera bild-URL till en base64-sträng?


Jag har ett problem och jag behöver konvertera en bild, som kommer tillbaka som en URL, till base64. Till exempel, hur denna bild-URL

https://cdn.pixabay.com/photo/2015/02/24/15/41/dog-647528__340.jpg

kan konverteras till base64.

Jag vet att det finns webbplatser för bildenkodare, som

https://www.base64-image.de/

men jag behöver göra det dynamiskt i min kod.

Svar #1

Detta fungerade för mig:

TS FILE
base64ImageString;

async getBase64ImageFromUrl(imageUrl) {
    var res = await fetch(imageUrl);
    var blob = await res.blob();
    return new Promise((resolve, reject) => {
      var reader  = new FileReader();
      reader.addEventListener("load", function () {
          resolve(reader.result);
      }, false);
      reader.onerror = () => {
        return reject(this);
      };
      reader.readAsDataURL(blob);
    })
  }


ngOnInit() {
   this.getBase64ImageFromUrl(this.userData.organization_logo).then(base64 => {
      this.base64ImageString = base64;
    })
}

HTML

  <img src='{{ base64ImageString }}' class="logo" />

Svar #2

du kan göra så här, och kanske behöver du lösa ursprungskorset om bildens URL inte har samma ursprung

const image = new Image();
image.onload = function(){
  const width = image.width;
  const height = image.height;

  const canvas = document.createElement('canvas');
  canvas.width = width;
  canvas.height = height;
  const ctx = canvas.getContext('2d');
  ctx.drawImage(image, 0, 0);
  const base64 = canvas.toDataURL({format: "png"})
  console.log(base64);
}
  
image.src = 'https://cdn.pixabay.com/photo/2015/02/24/15/41/dog-647528__340.jpg';