Xamarin外部图像不显示问题

时间:2019-10-27 00:26:00

标签: c# xamarin.forms xamarin.android xamarin.ios visual-studio-2019

我正在尝试将图像添加到Visual Studio 2019上的Xamarin项目。图像从本地存储显示,但从外部链接显示。我需要能够显示图片网址中的图片。

我尝试过的事情:

在android apis 27,28上构建应用程序
ssl实施的检查选项是本机TLS 1.2+
更改站点ssl状态http,https。
更改来自不同站点的图像和图像URL。
另一个图片扩展名jpg,jpeg,png,...
在50 kb和3mb之间更改图像大小。

当我卸载并重建应用程序时,在首次运行的应用程序中抛出以下错误:

Image Loading: Error getting stream for https://p-valid.com/images/logo.png:
System.ObjectDisposedException:

我认为,此错误是Xamarin中的错误。

将此代码添加到AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET" />

只有当我将图像放入可绘制文件夹然后按其名称获取时,图像才会显示:

var image = new Image { Source =  "test.jpg"};

我的主要代码是:

var layout = new StackLayout { Padding = new Thickness(5, 10) };

var label = new Label { Text = "Hello world" };
var image = new Image { 
            Source = ImageSource.FromUri(new Uri("http://mydatabase/test.jpg"))
};

layout.Children.Add(label);
layout.Children.Add(image);

this.Content = layout;

我希望这段代码是:
编写Hello world,然后显示图像

但是它仅显示Hello World,并且没有图像。
也在调试输出控制台上写入此错误:

ImageLoaderSourceHandler: Could not retrieve image or image data was invalid: Uri http://mydatabase/test.jpg

我认为这段代码是关于错误的缓存图像数据的。

1 个答案:

答案 0 :(得分:2)

首先,关于xamarin表单版本的新创建项目为4.2。但是,它会发生错误:

  

[0:] ImageLoaderSourceHandler:无法检索图像或图像数据无效:Uri:https://aka.ms/campus.jpg

但是在项目中检查最新版本的Xamarin Forms 之后。您可以将其更新为最新版本: 4.3.0.908675 ,以检查是否存在此问题。更新后,它可以工作。

在新的有顶项目中,代码没有问题,如下所示:

public partial class MainPage : ContentPage
{
    public MainPage()
    {
        InitializeComponent();

        var layout = new StackLayout { Padding = new Thickness(5, 10) };

        var label = new Label { Text = "Hello world" };
        var image = new Image
        {
            Source = ImageSource.FromUri(new Uri("https://s2.ax1x.com/2019/10/28/K6KUo9.png")),
            BackgroundColor = Color.Accent
        };

        layout.Children.Add(label);
        layout.Children.Add(image);

        Content = layout;
    }
}

需要在manifest中添加添加权限:

<uses-permission android:name="android.permission.INTERNET" />

效果:

enter image description here

注意:最好不要加载大尺寸的图像。也会导致错误加载。