.NET MAUI从Stream加载IImage遇流关闭错误,如何存储图片用于视图显示?
问题:MAUI中正确存储并显示Base64格式图片
场景与模型定义
我从API获取Base64格式的图片,将其存储到Dish模型的imageData字段中,模型定义如下:
public class Dish { public int? productId { get; set; } public string? name { get; set; } public decimal? price { get; set; } public string? description { get; set; } public int? productCategoryId { get; set; } public string? notes { get; set; } public string? imageData { get; set; } public PlatformImage? image { get; set; } }
当前实现与需求
我需要处理一个List<Dish>集合,将Base64解析为字节流后绘制图片。此前尝试从MemoryStream加载图片时遇到“Closed stream”错误,于是改用当前代码实现,但作为.NET、MAUI及C#新手,我希望能正确存储图片,后续将其与模型其他信息一同在视图中显示。当前代码如下:
foreach (var dish in dishList) { IImage image; ICanvas canvas; var imagen = await httpClient.GetAsync($"https://mydinner.ch/ManagementAPI/api/ProductImages/GetDefaultImageByProductId?productId={dish.productId}"); var imagenesString = await imagen.Content.ReadAsStringAsync(); var imagenes = JsonConvert.DeserializeObject<Dish>(imagenesString); byte[] imageBytes = Convert.FromBase64String(imagenes.imageData.Substring(23)); var ms = new MemoryStream(imageBytes); image = PlatformImage.FromStream(ms); if (image != null) { canvas.DrawImage(image, 10, 10, image.Width, image.Height); } }
内容的提问来源于stack exchange,提问作者David Isea
相关产品推荐
相关产品推荐

