如何在c#中将Android.graphics.bitmap更改为字节数组



我有一个android.graphics.bitmap和一个android.net.Uri,我可以随心所欲地使用这两个。但我不知道如何获取位图并将其转换为字节[]。我尝试过使用Parcel,但无法初始化它。当我在位图和uri的writetoparcel方法中使用它时,它会引发错误。

我尝试了位图ToArray方法,它只会创建一个空数组。我也尝试过使用compression方法,但无法初始化流。文本编辑器在抽象类中创建新Stream时抛出一个错误。

有没有我遗漏的一些参考资料可以让我这么做。

这就是我最终用来将其放入字节数组并调整大小的方法。

Bitmap thumb;
Android.Net.Uri val;
this.thumb = MediaStore.Images.Media.GetBitmap(this.ContentResolver, this.val);                        
Bitmap scaledThumb = Bitmap.CreateScaledBitmap(this.thumb, 1600, 1200, true);                        
MemoryStream stream = new MemoryStream();
scaledThumb.Compress(Bitmap.CompressFormat.Jpeg, 50, stream);
this.byteArr = stream.ToArray();

这就是你的做法。

byte[] bitmapData;
using (var stream = new MemoryStream())
{
    bitmap.Compress(Bitmap.CompressFormat.Png, 0, stream);
    bitmapData = stream.ToArray();
}

我的猜测是您想要使用:

Android.Graphics.Bitmap.CopyPixelsToBuffer (Java.Nio.Buffer)

或:

Android.Graphics.Bitmap.GetPixels (int[], int, int, int, int, int, int)

最新更新