【问题标题】:How to decode a bitmap from a local file deployed with Android application如何从使用 Android 应用程序部署的本地文件中解码位图
【发布时间】:2017-11-16 21:41:31
【问题描述】:

我正在经历http://developer.xamarin.com/guides/cross-platform/xamarin-forms/working-with/images/ 并试图让本地图像与 Android 一起工作,但是我在尝试在普通 monodroid 中做某事时遇到了一些问题,作为进一步的测试。我用的是SharedProject,仅供参考。

我已在 Resources/drawable (test1.png) 中添加了测试图像,并将 Build Action 设置为它所描述的 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 以及如何更正?

【问题讨论】:

    标签: xamarin xamarin.android xamarin.forms


    【解决方案1】:

    Xamarin.Forms FileImageSource 具有回退模式,因为它涵盖了两种不同的场景。

    首先会通过BitmapFactory.DecodeFile检查文件系统中是否存在该文件。

    如果 文件 属性中指定的文件不存在,那么它将使用BitmapFactory.DecodeResource 尝试加载资源内容作为次要选择。

    FileImageSource for Android 因此不仅适用于文件系统中存在的文件,还适用于检索命名资源。

    link 表示 Android 资源 已编译到应用程序中,因此不会作为物理文件成为文件系统的一部分。

    【讨论】:

      【解决方案2】:

      因为 test1.png 是一个 Drawable 你应该使用 BitmapFactory.DecodeResource ()

      【讨论】:

      • 肯定是另一种方式,但这也是我从文档中看到的物理文件,也应该能够被文件位置引用。我将如何通过 DecodeFile 函数引用它?
      【解决方案3】:
      string scr = "@drawable/test1.png";
      ImageView iv = new ImageView(context);
      Bitmap bm = BitmapFactory.DecodeFile(src);
      if (bm != null)
          iv.SetImageBitmap(bm);
      

      【讨论】:

      • 它不起作用 - bm 为空。
      猜你喜欢
      • 1970-01-01
      • 2016-07-24
      • 1970-01-01
      • 2014-06-28
      • 2021-12-23
      • 2013-04-05
      • 2015-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多