Конвертировать URI данных в Blob

В настоящее время я использую библиотеку Jdenticon для создания пользователя identicons как изображение профиля по умолчанию. Я хотел бы преобразовать URI данных для SVG в Blob или сделать его в виде файла изображения, чтобы я мог сохранить файл изображения в Firebase.

Я попробовал несколько примеров кода из Stack Overflow, но ни один из них не работал для меня. (Я не конвертировал данные в base64. Не думаю, что в синтаксисе SVG есть какие-то безумные символы.)

createIdenticonBlob(hash: string) {
  if (hash) {
    let svg = jdenticon.toSvg(hash, Math.min(50, 50));
    let uri = "data:image/svg+xml," + encodeURIComponent(svg);
    return this.uploadService.convertDataURIToBlob(uri); // I'm not sure :(
  }
}

jdenticon.toSvg (хеш | значение, размер [, заполнение])

Я не уверен, как конвертировать Data URI в файл изображения. Какие-нибудь мысли?

1 ответ

Решение

Вы не хотите преобразовывать dataURI в файл, вы хотите создать файл из разметки svg, который является просто текстом, и если ваш плагин действительно возвращает разметку svg, это действительно легко сделать:

createIdenticonBlob(hash: string) {
  if (hash) {
    let svg = jdenticon.toSvg(hash, Math.min(50, 50));
    let blob = new Blob([svg], {type: 'image/svg+xml'});
    return blob;
  }
}
Другие вопросы по тегам