Xamarin外部图像不显示问题

Tur*_*dek 5 c# xamarin.ios xamarin.android xamarin.forms visual-studio-2019

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

我尝试过的:

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

当我卸载并重建应用程序时,在第一次运行应用程序时抛出此错误:

Image Loading: Error getting stream for https://p-valid.com/images/logo.png:
System.ObjectDisposedException:
Run Code Online (Sandbox Code Playgroud)

在我看来,这个错误是 Xamarin 中的一个错误。

将此代码添加到 AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET" />
Run Code Online (Sandbox Code Playgroud)

当我将图像放入可绘制文件夹然后通过其名称获取它时,图像显示的唯一方式:

var image = new Image { Source =  "test.jpg"};
Run Code Online (Sandbox Code Playgroud)

我的主要代码是:

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;
Run Code Online (Sandbox Code Playgroud)

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

但它只显示Hello world,没有图像。
另外,在调试输出控制台上写入此错误:

ImageLoaderSourceHandler: Could not retrieve image or image data was invalid: Uri http://mydatabase/test.jpg
Run Code Online (Sandbox Code Playgroud)

在我看来,这段代码是关于错误的缓存图像数据的。

Jun*_*ang 4

首先,新创建的有关 xamarin forms 版本的项目是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;
    }
}
Run Code Online (Sandbox Code Playgroud)

需要添加权限manifest

<uses-permission android:name="android.permission.INTERNET" />
Run Code Online (Sandbox Code Playgroud)

影响 :

在此输入图像描述

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