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

能否将UIImage转换为Microsoft.Maui.Image?求实现方法及安卓端方案

UIImage转Microsoft.Maui.Image及安卓端图像转换方案

核心说明

MAUI中没有直接将原生图像(如iOS的UIImage、安卓的Bitmap)转换为Microsoft.Maui.Image的API,因为Microsoft.Maui.Image是抽象类型,实际渲染依赖平台原生实现。正确的做法是将原生图像转换为ImageSource,再赋值给MAUI Image控件的Source属性——这也是和Xamarin.Forms的核心差异:Xamarin.Forms对原生图像做了隐式转换封装,MAUI则更偏向显式的平台抽象处理。

iOS端:UIImage转ImageSource

通过将UIImage转为流,再生成StreamImageSource:

using UIKit;
using Microsoft.Maui.Controls;

public ImageSource ConvertUIImageToImageSource(UIImage uiImage)
{
    using var nsData = uiImage.AsPNG(); // 若需要更小体积可改用AsJPEG()
    using var stream = nsData.AsStream();
    return ImageSource.FromStream(() => stream);
}

// 赋值给MAUI Image控件
var mauiImage = new Image();
mauiImage.Source = ConvertUIImageToImageSource(yourUIImageInstance);

安卓端:图像转换方案

1. Bitmap转ImageSource

直接将Bitmap压缩为流生成ImageSource:

using Android.Graphics;
using Microsoft.Maui.Controls;
using System.IO;

public ImageSource ConvertBitmapToImageSource(Bitmap bitmap)
{
    using var stream = new MemoryStream();
    bitmap.Compress(Bitmap.CompressFormat.Png, 100, stream);
    stream.Position = 0;
    return ImageSource.FromStream(() => stream);
}

// 使用示例
var mauiImage = new Image();
mauiImage.Source = ConvertBitmapToImageSource(yourBitmapInstance);

2. Android.Media.Image转ImageSource

Android.Media.Image需先转为Bitmap,再按上述方法转ImageSource:

using Android.Media;
using Android.Graphics;

public Bitmap ConvertMediaImageToBitmap(Image mediaImage)
{
    var imageReader = ImageReader.NewInstance(mediaImage.Width, mediaImage.Height, ImageFormatType.Jpeg, 1);
    using var imageProxy = imageReader.AcquireLatestImage();
    var plane = imageProxy.GetPlanes()[0];
    var buffer = plane.Buffer;
    var bytes = new byte[buffer.Capacity()];
    buffer.Get(bytes);
    var bitmap = BitmapFactory.DecodeByteArray(bytes, 0, bytes.Length);
    return bitmap;
}

// 后续转换为ImageSource
var bitmap = ConvertMediaImageToBitmap(yourMediaImageInstance);
var mauiImageSource = ConvertBitmapToImageSource(bitmap);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 14:02:54