从api获取图像作为字符串?到 UWP 应用程序
Posted
技术标签:
【中文标题】从api获取图像作为字符串?到 UWP 应用程序【英文标题】:Fetch images from api as strings? To UWP application 【发布时间】:2021-12-09 11:22:48 【问题描述】:有没有办法将图像作为字符串获取到 UWP 应用程序? 我试图从我的数据库(ms-sql 服务器)中获取我的图像并将它们显示在我的 UWP 应用程序中。我现在只有名字,没有图像..有没有办法在 xaml 的图像源标签中显示“图像文件”?
我的 API
XAML 代码:
<Grid>
<ListBox x:Name="lstImages">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="Binding Name"></TextBlock>
<Image Source="Binding ImageFile"></Image>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</Page>
XAML.cs
public ObservableCollection<Games> gamesList get; set; = new ObservableCollection<Games>();
public MainPage()
this.InitializeComponent();
LoadImages();
internal async System.Threading.Tasks.Task LoadImages()
HttpClient httpClient = new HttpClient();
string apiURL = @"http://localhost:65143/api/Games";
HttpResponseMessage response = await httpClient.GetAsync(new Uri(apiURL));
if (response.IsSuccessStatusCode)
string content = await response.Content.ReadAsStringAsync();
gamesList = JsonConvert.DeserializeObject<ObservableCollection<Games>>(content);
lstImages.ItemsSource = gamesList;
【问题讨论】:
【参考方案1】:有没有办法将图像作为字符串获取到 UWP 应用程序?
是的,有办法做到这一点。根据您的描述,您已经获得了要显示的图像的路径。那么您只需将图像文件作为流打开并使用BitmapSource.SetSourceAsync() Method 将流设置为BitmapImage
对象的源。
首先,您必须在清单文件中添加 Document 功能,以获得访问 Document Library 的权限。更多细节在这里:File access permissions。
像这样:
<Capabilities>
<Capability Name="internetClient" />
<uap:Capability Name="documentsLibrary"/>
</Capabilities>
然后您可以获取图像文件并将其作为流打开。
以下是您可以参考的示例代码:
StorageFolder folder = await KnownFolders.DocumentsLibrary.GetFolderAsync("uwpAppPics");
StorageFile file = await folder.GetFileAsync("london.png");
// Ensure the stream is disposed once the image is loaded
using (IRandomAccessStream fileStream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read))
// Set the image source to the selected bitmap
BitmapImage bitmapImage = new BitmapImage();
await bitmapImage.SetSourceAsync(fileStream);
//MyImage is the image control
MyImage.Source = bitmapImage;
【讨论】:
这正是我所需要的!解决了我的问题。非常感谢!以上是关于从api获取图像作为字符串?到 UWP 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
将图像(base64 字符串)作为文件流上传到 Web API
从 StackPanel C# UWP 中选择图像(将动作侦听器添加到 UIElement 并将图像添加到 UIElement)
从 C# 控制台应用程序枚举 UWP MIDI API 设备?