Как изменить Android.graphics.bitmap в байтовый массив в c # - PullRequest
0 голосов
/ 22 марта 2012

У меня есть android.graphics.bitmap и android.net.Uri, оба из которых я могу использовать в любом случае, когда захочу.Но я не знаю, как взять растровое изображение и превратить его в байт. [] Я пытался использовать Parcel, но не могу его инициализировать, и когда я использую его в методе writetoparcel для растрового изображения иошибка.

Я попробовал метод ToArray для растровых изображений, и он ничего не делает, кроме как создает пустой массив.Я также пытался использовать метод сжатия, но я не могу инициализировать поток.Текстовый редактор выдает ошибку о создании нового потока внутри абстрактного класса.

Есть ли какая-то ссылка, которая мне не хватает, которая позволяет мне сделать это.

Ответы [ 3 ]

3 голосов
/ 06 апреля 2012

Это то, что я использовал, чтобы получить его в байтовом массиве и изменить его размер.

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();
1 голос
/ 03 марта 2017

Вот как ты это делаешь.

byte[] bitmapData;
using (var stream = new MemoryStream())
{
    bitmap.Compress(Bitmap.CompressFormat.Png, 0, stream);
    bitmapData = stream.ToArray();
}
1 голос
/ 22 марта 2012

Я думаю, вы хотели бы использовать:

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

или

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