从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 设备?

Xamarin.Forms (UWP) - 如何获取 WebView 的 DOM 作为 HTML 字符串?

Vue 如何正确绑定 src 与 API 的输出

UWP 文件缩略图保存在 SQL Server 数据库中