【问题标题】:Bitmap Compress : Null point exception error位图压缩:空点异常错误
【发布时间】:2018-04-11 04:02:32
【问题描述】:

尝试压缩位图时出现空指针异常,因此我可以将其发送到 ByteArrayOutputStream 以获取字节数组。日志错误如下所示。

java.lang.RuntimeException: An error occurred while executing doInBackground()
                                                                             at android.os.AsyncTask$3.done(AsyncTask.java:309)
                                                                             at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
                                                                             at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
                                                                             at java.util.concurrent.FutureTask.run(FutureTask.java:242)
                                                                             at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
                                                                             at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
                                                                             at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
                                                                             at java.lang.Thread.run(Thread.java:818)
                                                                          Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.graphics.Bitmap.compress(android.graphics.Bitmap$CompressFormat, int, java.io.OutputStream)' on a null object reference
                                                                             at worldnp.zpmobi.mobi.test.MainActivity$Encode_image.doInBackground(MainActivity.java:102)
                                                                             at worldnp.zpmobi.mobi.test.MainActivity$Encode_image.doInBackground(MainActivity.java:94)
                                                                             at android.os.AsyncTask$2.call(AsyncTask.java:295)

java代码:

protected Void doInBackground(Void... voids) {

            bitmap = BitmapFactory.decodeFile(file_uri.getPath());
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
            bitmap.recycle();

            byte[] array = stream.toByteArray();
            encoded_string = Base64.encodeToString(array, 0);
            return null;
        }

当位图应该被压缩时,应用程序就会崩溃。我的代码哪里做错了?

【问题讨论】:

  • 您没有位图。 bitmap==null。使用前检查,如果为空就不要使用。
  • 您还应该告诉我们file_uri.getPath() 的值。我认为它不是有效的文件系统路径。

标签: android bitmap


【解决方案1】:
protected Void doInBackground(Void... voids) {

        Bitmap bitmap = BitmapFactory.decodeFile(file_uri.getPath());
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
        bitmap.recycle();

        byte[] array = stream.toByteArray();
        encoded_string = Base64.encodeToString(array, 0);
        return null;
    }

你在初始化变量bitmap时没有给它一个类型。

【讨论】:

  • You didn't give the variable bitmap a type when you initialised it.。大废话。然后代码甚至无法编译。谁赞成这个?
猜你喜欢
  • 2016-04-16
  • 1970-01-01
  • 2017-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多