C# MAUI ImageSource与byte[] 互转
时间: 2024-11-15 17:26:06 浏览: 3
C#.NET MAUI MVVM工具
在C# MAUI(Microsoft UI for Xamarin)中,`ImageSource` 是一种用于表示图像资源的接口,它可以处理各种类型的图片数据,包括从本地文件、网络请求、位图数据等来源加载的图片。当你有一个 `byte[]` 表示的字节序列,通常代表的是图片的二进制数据,你可以将其转换为 `ImageSource` 来显示。
以下是将 `byte[]` 转换为 `ImageSource` 的一种常见方法:
```csharp
using MauiApp;
using SkiaSharp;
public ImageSource ByteArrayToImageSource(byte[] bytes)
{
using (var stream = new MemoryStream(bytes))
{
var imageInfo = await SkiaImageSource.FromStreamAsync(stream);
return imageInfo;
}
}
```
这里使用了 SkiaSharp 库来创建一个 `SkiaImageSource`,它支持从字节数组创建 `ImageSource`。
反过来,如果你想把 `ImageSource` 转换成 `byte[]`,可以这样做:
```csharp
public byte[] ImageSourceToByteArray(ImageSource imageSource)
{
if (imageSource is BitmapImage bitmapImage)
{
using (var memoryStream = new MemoryStream())
{
bitmapImage.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Png);
memoryStream.Seek(0, SeekOrigin.Begin); // Move the pointer back to the beginning of the stream
return memoryStream.ToArray();
}
}
else
{
throw new NotSupportedException($"Unsupported ImageSource type: {imageSource.GetType().Name}");
}
}
```
这个方法假设你使用的 `ImageSource` 类型是 `BitmapImage`,并将其保存到一个新的 `MemoryStream` 中,然后读取回字节数组。
阅读全文