You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MAUI应用从gRPC获取ByteString转Image报错:Image无FromStream定义

问题:MAUI应用中显示gRPC返回的ByteString图片报错

从gRPC服务获取到ByteString后,想要在MAUI应用中显示对应的图片,但始终报错无法运行,尝试多种方法均未解决。

当前使用的代码

using (var ms = new MemoryStream(bytes.ToByteArray()))
{
    return Image.FromStream(ms); // FromStream 报错
}

尝试过的其他代码

MemoryStream ms = new MemoryStream(data);
Image returnImage = System.Drawing.Image.FromStream(ms);

Image x = (Bitmap)(new ImageConverter().ConvertFrom(bytes.ToByteArray()));

上述代码同样出现大量错误。

问题关键点

已引用System.Drawing但该引用呈灰色,检查后发现代码中的Image默认引用的是Microsoft.Maui.Controls.Image类,它和System.Drawing.Image并非同一类型,这是核心冲突所在。

解决方案

MAUI的Image控件需要绑定的是ImageSource类型,而非System.Drawing.Image,正确的转换方式如下:

方法1:直接从字节数组创建ImageSource

// 将ByteString转换为字节数组
byte[] imageBytes = bytes.ToByteArray();
// 创建ByteArrayImageSource并赋值给MAUI Image控件的Source属性
yourMauiImageControl.Source = ImageSource.FromByteArray(imageBytes);

方法2:通过流创建StreamImageSource

byte[] imageBytes = bytes.ToByteArray();
yourMauiImageControl.Source = new StreamImageSource
{
    Stream = token => Task.FromResult(new MemoryStream(imageBytes))
};

说明

  • System.Drawing.Image是传统桌面框架(WinForms/WPF)的类型,MAUI不推荐直接使用,且MAUI的Image控件不支持该类型,这是之前代码报错的根本原因。
  • System.Drawing引用呈灰色是因为MAUI项目中该包几乎没有实际作用,MAUI拥有独立的图像处理API。

内容的提问来源于stack exchange,提问作者John Harris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 14:22:14