Nativescript 6.2 - преобразование строки изображения base64 в imageSource - PullRequest
0 голосов
/ 21 февраля 2020

В моем приложении NS 6.2 Core я пытаюсь загрузить изображение, полученное из серверной части, в виде строки base64. Эта строка должна быть преобразована в imageSource и отображена в элементе изображения. Я тестирую на физическом устройстве Android.

Пока я пытался:

const img = <Image>e.object;    
let imageSource = new ImageSource();
var isLoaded = imageSource.loadFromBase64('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0i...');
if (isLoaded) {
    img.imageSource = imageSource;
}

Строка base64 подтверждена как действительная, но isLoaded всегда ложна.
Я также пробовал:

const s: string = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8...';
imageSource.fromBase64(s).then((loaded:boolean) => {
    img.imageSource = imageSource;
});

Это тоже не сработало, ошибок нет, просто ничего не загружается в образ.

Последнее, что я попробовал, было:

import { fromBase64, ImageSource } from "tns-core-modules/image-source";

const s: string = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8...';
img.imageSource = fromBase64(s);

Это приводит к ошибке:

System.err: An uncaught Exception occurred on "main" thread.
System.err: Calling js method onCreateView failed
System.err: Error: java.lang.IllegalArgumentException: bad base-64

У меня нет идей. Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 21 февраля 2020

Вы можете попробовать split строку base64, чтобы удалить data:image/svg+xml;base64 часть.

let base64 = 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0i...'
let data = base64.split(",");
let isLoaded = imageSource.loadFromBase64(data[1]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...