У меня есть куча изображений, хранящихся в базе данных моего сервера в виде байтовых массивов, которые я хотел бы использовать в своем приложении для Android.
Массивы байтов были созданы из изображений в приложении Windows Phone 7, поэтому для записи в IsolatedStorageFileStream (isfs) используется .NET WriteableBitmap (wbmp):
wbmp.SaveJpeg(isfs, newWidth, newHeight, 0, 90);
В приложении Android у меня есть виджет ImageView, который я пытаюсь использовать для отображения одного из изображений. Я пытался использовать BitmapFactory для декодирования байтового массива (полезная нагрузка):
Bitmap bmp = BitmapFactory.decodeByteArray(payload, 0, payload.length);
img1.setImageBitmap(bmp);
Но это не работает - изображение не отображается, и bmp становится нулевым, когда я перехожу через отладчик. Похоже, это указывает на то, что BitmapFactory не может правильно декодировать байтовый массив.
Для Windows Phone 7 я просто загружаю байт [] (реальность) в MemoryStream (mstream), а затем вызываю метод SetSource растрового изображения (bmp) с этим MemoryStream:
mstream = new MemoryStream(reality);
bmp.SetSource(mstream);
Итак, на Android я попытался прочитать байтовый массив в MemoryFile, а затем загрузить InputStream в MemoryFile с помощью BitmapFactory:
MemoryFile mf;
try {
mf = new MemoryFile("myFile", payload.length);
mf.writeBytes(payload, 0, 0, payload.length);
InputStream is = mf.getInputStream();
Bitmap bmp = BitmapFactory.decodeStream(is);
img1.setImageBitmap(bmp);
} catch (IOException e) {
e.printStackTrace();
}
Но это все еще не работает.
Как мне успешно загрузить массив байтов в этом формате в Android для отображения изображения?