В моем проекте я запрашиваю изображение из firebase, которое я храню в объекте Image
. После получения изображения из firebase я пытаюсь отобразить изображение на странице содержимого. Запустив приведенный ниже код, я не получил исключений, но изображение не отображается на странице содержимого.
XAML-код
<StackLayout>
<Image x:Name = "ImageDisplayObject"/>
</StackLayout>
Код С#
public void ImageRxEvent(Image firebaseImage)
{
ImageDisplayObject = firebaseImage;
}
Я пытаюсь использовать метод FromStream()
, но я также не могу найти какой-либо вариант этого, потому что примеры только с изображением, уже сохраненным на мобильном устройстве, что в моем случае не будет работать, потому что изображение хранится на сервере firebase и Я читаю его и сохраняю изображение в объекте (класс изображения).
Единственный ввод — это объект Image
, а не какой-то строковый путь к изображению, потому что в этом случае я буду использовать метод FromFile()
.
что вы получаете, строку base64, поток. Что такое тип объекта. также вы не можете приравнять изображение к изображению и надеяться, что изображение будет отображаться
Привет Джейсон, это Xamarin.Forms.Image
так что вы храните весь объект изображения в Firebase? Это кажется неправильным - вы должны хранить URL-адрес изображения или данные изображения в виде байта [] или закодированной строки, а не самого объекта пользовательского интерфейса.
Я храню изображение в хранилище firebase, а в базе данных firebase ссылку на изображение. Здесь я также изучаю способ получения изображения по ссылке из firebase.
@Radu Привет, не зная типа ссылки, вы могли бы поделиться образцом рассматриваемой ссылки для проверки. Кроме того, у вас есть попытка с этим?
Привет Джуниор Цзянь, вот пример ссылки, по которой я могу получить доступ к изображению из firebase: https://firebasestorage.googleapis.com/v0/b/waiterdatabase.appspot.com/o/Images%2NameOfImage.png?alt=media&token=a8e3ca82-4519-46e6-b3ec-827a7f4635bf
@Radu Спасибо, я вижу, что это изображение png
. Однако ее нельзя отобразить с помощью ImageView
, поскольку это проверенная ссылка. Я предлагаю загрузить его и сохранить локально, а затем использовать ImageSource.FromStream
, чтобы показать изображение, посмотрите это обсуждение.stackoverflow.com/questions/59632849/…
Я не уверен, какой класс изображения вы используете в ImageRxEvent. однако я бы предложил создать ImageSources, где вы получаете свои данные. Например, если вы использовали ресурс, вы могли бы использовать следующее.
ImageSource UpdatedImage=ImageSource.FromStream(() => new MemoryStream(Resource.SettingsIcon));
затем обновите изображение с помощью
ImageDisplayObject.Source=UpdatedImage;
Привет, Девлин, я использую класс Xamarin.Forms.Image.
@Radu Я бы предложил использовать File.ReadAllBytes(путь) и приведенный выше код для создания источника изображения вместо использования .FromFile(путь), иначе вы можете попробовать ImageDisplayObject.Source=firebaseImage.Source
Я не могу использовать File.ReadAllBytes(path)
или FromFile(path)
, потому что изображение хранится в хранилище Firebase, и я получаю к нему доступ, используя URL-ссылку на изображение. Я также ищу способ получить изображение из firebase, используя URL-ссылку.
firebaseImage
этоXamarin.Forms.Image
или что-то другое? К какому типу (и пространству имен) относится этот объект?