使用Xamarin Forms显示图像

Dus*_*vis 7 xamarin.ios xamarin.android xamarin xamarin.forms

解决: 答案是更新所有nuget包并定位更新版本的Android.现在图像按预期加载.我对此并不满意,因为我正在使用Xamarin提供的代码,并且针对较新版本已经弃用了代码所依赖的一些项目.初始版本是Xamarin.Forms v23,我更新到V25

我有一个全新的Xamarin表单项目,其中有一个简单的视图,我正在尝试显示图像.我已经尝试了几种方法来显示图像,而我根本没有任何运气.

我正在使用<image>,我也尝试过FFImageLoader控件.

<StackLayout Orientation="Vertical">

        <ff:CachedImage Source="https://static.pexels.com/photos/104827/cat-pet-animal-domestic-104827.jpeg" WidthRequest="100" HeightRequest="100" />

        <Button x:Name="btn" Text="Image" Clicked="Button_Clicked" />

        <Frame OutlineColor="Red">
            <Image x:Name="StupidImage" Source="{Binding Thumbnail}"  Aspect="Fill" HeightRequest="100" WidthRequest="100"   />
        </Frame>

        </StackLayout>
Run Code Online (Sandbox Code Playgroud)

这是当前的观点.我还将Source直接设置为没有结果的值.

我能够获得图像的流.我能够从流中读取所有字节.我构建了一个调试可视化工具,将字节显示为图像.从源获取图像不是问题.获取图像控件以显示图像是一个问题.

我尝试用视图模型绑定.当失败时,我尝试直接设置源

StupidImage.Source = ImageSource.FromStream(() => result.Stream);
Run Code Online (Sandbox Code Playgroud)

我也做了一个字节的副本并尝试过

StupidImage.Source = ImageSource.FromStream(() => new MemoryStream(imageBytes));
Run Code Online (Sandbox Code Playgroud)

我试过ImageSource.FromFile().FromUri.我尝试将图像作为资源添加到项目中.每次尝试都是相同的,资源被读取并且字节可用,但图像控件只是不显示它.

我想也许这是一个尺寸问题,所以我设置了控件的大小.没有.我想也许这是一个分辨率问题,所以我使用了一个较小的图像.我尝试了几种不同质量的不同图像.

然后我放弃了图像控制,我得到了FFImageLoading nuget包,并给了它一个直接的URL到图像.FFImageLoading示例使用的相同示例.仍然没有形象.

我尝试了模拟器,我尝试了两种不同的物理设备.结果相同.

我也尝试使用btn.Image = "whatever.jpg"相同的结果在按钮上设置图像.

这是每次的结果.我迷路了.如何显示图像?

编辑: 我确实让这个工作,但只在模拟器上

<Image x:Name="StupidImage" Source="https://static.pexels.com/photos/104827/cat-pet-animal-domestic-104827.jpeg" />
Run Code Online (Sandbox Code Playgroud)

同样的

StupidImage.Source = ImageSource.FromUri(new Uri("https://static.pexels.com/photos/104827/cat-pet-animal-domestic-104827.jpeg"));
Run Code Online (Sandbox Code Playgroud)

编辑2 - 澄清

我的目标是允许用户从设备中选择一张照片,然后显示它的预览.

在此输入图像描述

小智 6

如果您想在应用程序中使用图像,可以将它们加载到共享项目中,例如

嵌入资源

确保将Build Action更改为Embedded资源

然后在你的代码中

image.Source = ImageSource.FromResource("App5.Images.useravatar.png");
Run Code Online (Sandbox Code Playgroud)

请注意资源名称.

和XAML

<ContentPage.Content>
    <StackLayout>
        <Image x:Name="image" WidthRequest="50"/>
    </StackLayout>
</ContentPage.Content>
Run Code Online (Sandbox Code Playgroud)