我正在尝试将图像添加到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
我认为这段代码是关于错误的缓存图像数据的。
答案 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" />
效果:
注意:最好不要加载大尺寸的图像。也会导致错误加载。