Android从库中选择图像java.lang.NullPointerException:尝试在空对象上调用虚拟方法'boolean Bitmap.compress()'

问题描述 投票:0回答:1

我正在创建从选择图库上传到服务器的图像。一周前,一切正常,但今天却无法正常工作,并显示此错误。

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=2, result=-1, data=Intent { dat=content://media/external/images/media/61489 flg=0x1 (has extras) }} to activity {com.example.pmb/com.example.pmb.Uploadlagi}: 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 android.app.ActivityThread.deliverResults(ActivityThread.java:4619)
    at android.app.ActivityThread.handleSendResult(ActivityThread.java:4661)
    at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:49)
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1957)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:214)
    at android.app.ActivityThread.main(ActivityThread.java:7077)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)
 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 com.example.pmb.Uploadlagi.BitMapToString(Uploadlagi.java:140)
    at com.example.pmb.Uploadlagi.onActivityResult(Uploadlagi.java:134)

这里是脚本

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        if (requestCode == 2) {
            Uri selectedImage = data.getData();
            String[] filePath = { MediaStore.Images.Media.DATA };
            Cursor c = getContentResolver().query(selectedImage,filePath, null, null, null);
            c.moveToFirst();
            int columnIndex = c.getColumnIndex(filePath[0]);
            String picturePath = c.getString(columnIndex);
            c.close();
            Bitmap thumbnail = (BitmapFactory.decodeFile(picturePath));
            IDProf.setImageBitmap(thumbnail);
            BitMapToString(thumbnail);   <------- error mention to this line
        }
    }
}
public String BitMapToString(Bitmap userImage1) {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    userImage1.compress(Bitmap.CompressFormat.JPEG, 80, baos);
    byte[] b = baos.toByteArray();
    Document_img1 = Base64.encodeToString(b, Base64.DEFAULT);
    return Document_img1;
}

什么问题?以及必须解决的问题?

ps:我正在测试三星A6

我正在创建从选择图库上传到服务器的图像。一周前,一切正常,但今天却无法正常工作,并出现此错误。 java.lang.RuntimeException:无法交付结果ResultInfo {...

java android android-studio android-bitmap bitmapfactory
1个回答
0
投票

[我找到了解决方案,当我向上滚动日志时,我发现未授予权限,因此在onCreate()函数中,我创建了权限请求。

© www.soinside.com 2019 - 2024. All rights reserved.