[英]Xamarin external image not displaying problem
我正在嘗試將圖像添加到 Visual Studio 2019 上的 Xamarin 項目。圖像顯示來自本地存儲,但來自外部鏈接。 我需要能夠顯示圖像 url 中的圖像。
我嘗試過的:
在 android api 27,28 上構建應用程序
ssl 實現的檢查選項是 Native 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中的一個bug。
將此代碼添加到 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 並且沒有圖像。
同樣在調試 output 控制台上寫入此錯誤:
ImageLoaderSourceHandler: Could not retrieve image or image data was invalid: Uri http://mydatabase/test.jpg
在我看來,這段代碼是關於錯誤緩存圖像數據的。
一開始,新創建的項目關於 xamarin forms 的版本是4.2
。 但是,它會發生錯誤:
[0:] ImageLoaderSourceHandler:無法檢索圖像或圖像數據無效:Uri: https://aka.ms/campus.jpg
但是在項目中檢查了最新版本的 Xamarin Forms之后。 您可以將其更新到最新版本: 4.3.0.908675以檢查是否存在此問題。 更新后,它工作。
新的 crested 項目中的代碼沒有問題,如下所示:
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" />
影響:
注意:最好不要加載大尺寸的圖像。 它也會導致錯誤加載。
我遇到了同樣的問題並在這里找到了解決方案:https://doumer.me/resolve-image-loading-error-in-xamarin.forms/
右鍵單擊您的 android 項目
Select 屬性
Go 至 Android 選項
單擊高級按鈕
將 HTTPClient 更改為托管
將 SSL/TLS 實現更改為本機 TLS 1.2+
保存更改並運行您的項目。
來自 Uri 的圖像現在將加載
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.