Как декодировать растровое изображение из локального файла, развернутого с помощью приложения Android

Я просматриваю http://developer.xamarin.com/guides/cross-platform/xamarin-forms/working-with/images/ и пытаюсь заставить локальные образы работать с Android, однако я испытываю некоторые проблемы при попытке сделать что-то в обычном монодроиде, как и в дальнейшем контрольная работа. Я использую SharedProject только для справки.

Я добавил тестовое изображение в Resources / drawable (test1.png), а также установил действие сборки как AndroidResource, как он описывает, и если я сделаю следующее в Xamarin.Forms, он будет работать: -

Xamarin.Forms.Image myimage = new Image();
myimage.Source = ImageSource.FromFile("test1.png");

Однако, если я попытаюсь получить тот же файл следующим образом, он вернется как null.

 Android.Graphics.Bitmap objBitmapImage = Android.Graphics.BitmapFactory.DecodeFile("test1.png")

Кто-нибудь знает, почему это null и как исправить?


person Johnny    schedule 03.10.2014    source источник


Ответы (2)


Xamarin.Forms FileImageSource имеет резервный режим, поскольку он охватывает два разных сценария.

Сначала он проверит, существует ли файл в файловой системе через BitmapFactory.DecodeFile.

Если файл не существует, как указано в свойстве Файл, он будет использовать BitmapFactory.DecodeResource, чтобы попытаться загрузить содержимое ресурса в качестве дополнительной альтернативы.

Таким образом, FileImageSource для Android не только для файлов, существующих в файловой системе, но и для получения именованных ресурсов.

Эта ссылка указывает, что ресурсы Android скомпилированы в приложение и, следовательно, не будет частью файловой системы в виде физических файлов.

person Pete    schedule 04.10.2014

Поскольку test1.png является Drawable, вам следует использовать BitmapFactory.DecodeResource ()

person Kiliman    schedule 04.10.2014
comment
Конечно, это альтернативный способ, но это также физический файл из того, что я вижу в документации, на который также можно ссылаться по местоположению файла. Как я могу сослаться на это через функцию DecodeFile? - person Johnny; 04.10.2014