xamarin 如何从mediaPicker中拾取的图像获取MAUI.graphics.IImage对象?

waxmsbnn  于 2022-12-28  发布在  其他
关注(0)|答案(1)|浏览(117)

我一直在尝试从使用Microsoft.Maui.Media.MediaPicker拾取的图像中获取Microsoft.Maui.Graphics.IImage对象。
我试着用

var file = await MediaPicker.PickPhotoAsync(new MediaPickerOptions
            {
                Title = "Pick a photo"
            });

var memoryStream = new MemoryStream();
var filestream = await file.OpenReadAsync();
await filestream.CopyToAsync(memoryStream);

byte[] byteArray = memoryStream.ToArray();
Microsoft.Maui.Graphics.IImage image;
Microsoft.Maui.Graphics.IImage newImage;
image = Microsoft.Maui.Graphics.Platform.PlatformImage.FromStream(memoryStream);

if (image != null)
{
    newImage = image.Resize(720, 1280, ResizeMode.Stretch, true);
}

现在,执行抛出错误"Object not set to a instance of the object".我调试了一下,发现虽然照片正在被拾取并加载到Memory Stream中,但'image'变量在被赋予该行中的值后并没有存储数据:

image = Microsoft.Maui.Graphics.Platform.PlatformImage.FromStream(memoryStream);

条件:

if (image != null)

返回true,但使用resize函数会引发"Object not set to a instance of the object"错误。

nue99wik

nue99wik1#

为什么不用字节数组呢
试试这样的方法:

Stream stream = await photo.OpenReadAsync();

stream.Position = 0;
byte[] byteArray;

using (BinaryReader br = new BinaryReader(stream))
{
   byteArray = br.ReadBytes((int)stream.Length);
}

因此,请使用LoadImageFromBytes此处为文档
希望有帮助。

相关问题