В моно для android У меня есть приложение, которое сохраняет изображения в локальном хранилище для целей кеширования. Когда приложение запускает приложение, оно пытается загрузить изображения из кеша, прежде чем пытаться загрузить их из Интернета.Чтение файла изображения из локального хранилища в моно для android
В настоящее время мне трудно найти хороший способ прочитать и загрузить их из локального хранилища.
настоящее время я использую что-то equivilant к этому:
List<byte> byteList = new List<byte>();
using (System.IO.BinaryReader binaryReader = new System.IO.BinaryReader(context.OpenFileInput("filename.jpg")))
{
while (binaryReader.BaseStream.IsDataAvailable())
{
byteList.Add(binaryReader.ReadByte());
}
}
return byteList.toArray();
OpenFileInput() возвращает поток, который не дает мне длину, так что я должен прочитать один байт в то время. Он также не может искать. Кажется, это заставляет изображения загружаться намного медленнее, чем они. Загрузка изображений из Resrouce.Drawable почти мгновенно сравнима, но с моим методом есть очень заметная пауза, возможно, 300 мс, для загрузки файла 8 КБ. Это похоже на действительно очевидную задачу, которую можно сделать, но я пробовал много решений и много искал для консультации, но безрезультатно.
Я также заметил, что этот код, похоже, аварийно завершает исключение EndOfStream, когда он не запускается в потоке пользовательского интерфейса.
Любая помощь будет очень ценится
'Bitmap растровый = BitmapFactory.DecodeStream (context.OpenFileInput ("filename.jpg")); ' Мой бог ... просто загрузка изображения прямо из фильтра работает отлично. Я чувствовал необходимость сначала загружать все в байтовый массив, когда мне действительно не нужно было. Спасибо за это, отлично решает мою проблему. – battlebottle