【问题标题】:BitmapFactory.decodeFile NullPointerExceptionBitmapFactory.decodeFile NullPointerException
【发布时间】:2018-07-03 23:25:57
【问题描述】:

我仅从 Asus ZenFone 3 (ZE552KL) (ASUS_Z012D)、Android 8.0 收到此错误

java.lang.NullPointerException: 在 android.graphics.Bitmap.createScaledBitmap (Bitmap.java:714)

File imageFile = new File(
    Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+imageBlocksFolder, "img122.png");

if(imageFile.exists()){

    bitmap = Bitmap.createScaledBitmap(BitmapFactory.decodeFile(imageFile.getAbsolutePath()), 50, 50, false);

    paint.setColor(cor);
    canvas.drawBitmap(bitmap, 100, 100, paint);
}

有人遇到过同样的问题吗?

【问题讨论】:

  • 你检查过 BitmapFactory.decodeFile(...) 没有返回 null 吗?
  • @Tyler V,问题可能是手机在 7000 公里之外,而且我没有华硕 ZenFone 3。png 文件正常且到位。在另一篇文章中,我看到将 R.drawable.imgagename 作为整数而不是保存路径,这解决了问题,但在我的情况下,图像是从服务器下载的。
  • 好吧,您可以在单独的步骤中返回它,并至少在使用它之前检查 null。那么你需要一个好的后备行为。抱歉,我不知道具体是什么原因造成的,可能是各种各样的事情。

标签: java android bitmap


【解决方案1】:

试试这个:

public void showImage(string filename)
    {
        analytics.LocalLog ("ShowImage");
        if (!string.IsNullOrEmpty (filename))
        {
            analytics.LocalLog ("Showing File: " + filename);

            BitmapFactory.Options options = new BitmapFactory.Options ();
            options.InSampleSize = 4;

            try {
                using(var fs = new System.IO.FileStream(filename, System.IO.FileMode.Open))
                {
                    using(Bitmap bitmap = BitmapFactory.DecodeStream (fs, null, options))
                    //using(Bitmap bitmap = BitmapFactory.DecodeFile (filename, options))
                    {
                        if(bitmap != null)
                        {
                            try {
                                momentImage.SetImageBitmap (bitmap);
                                momentImage.Visibility = ViewStates.Visible;
                            }catch{
                                GC.Collect ();
                            }
                        }else{
                            Utilities.DisplayMessage ("Could not load Image", "Please use a locally stored image, and check permissions", this);
                        }
                    }
                    fs.Close ();
                }
            }catch{
                Utilities.DisplayMessage ("Could not load Image", "Access denied to image, sorry", this);
            }

        }else{
            analytics.LocalLog ("No Filename passed");
        }
    }

【讨论】:

  • 这不是java。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-15
  • 2016-10-17
  • 2018-04-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多