ヌルオブジェクト参照に「)(INT android.graphics.Bitmap.getWidth」仮想メソッドを呼び出すことを試みます

Janessa・バウティスタ:

ギャラリー内の画像を選択するときに、なぜ私はこのエラーを取得していますか?

カメラを使って画像のキャプチャする細かい作業ですが、私はギャラリーで画像を選択していたときに、エラーがアップします。

 @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode == CAMERA_REQUEST_CODE){

            if(resultCode == Activity.RESULT_OK){
                File f = new File(currentPhotoPath);
                IDProf.setImageURI(Uri.fromFile(f));
                Log.d("taffffffg", "ABsolute Url of Image is " + Uri.fromFile(f));

                try {
                    Bitmap bitmap;
                    BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();
                    bitmap = BitmapFactory.decodeFile(f.getAbsolutePath(), bitmapOptions);
                    bitmap=getResizedBitmap(bitmap, 100);
                    IDProf.setImageBitmap(bitmap);
                    BitMapToString(bitmap);
                    String path = android.os.Environment
                            .getExternalStorageDirectory()
                            + File.separator
                            + "Phoenix" + File.separator + "default";
                    f.delete();
                    OutputStream outFile = null;
                    File file = new File(path, String.valueOf(System.currentTimeMillis()) + ".jpg");
                    try {
                        outFile = new FileOutputStream(file);
                        bitmap.compress(Bitmap.CompressFormat.JPEG, 85, outFile);
                        outFile.flush();
                        outFile.close();
                    } catch (FileNotFoundException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }

            }
        } else if(requestCode == GALLERY_REQUEST_CODE){
            if(resultCode == Activity.RESULT_OK){
                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));
                thumbnail=getResizedBitmap(thumbnail, 400);
                Log.w("path", picturePath+"");
                IDProf.setImageBitmap(thumbnail);
                BitMapToString(thumbnail);
            }

        }
    }

    public String BitMapToString(Bitmap userImage1) {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        userImage1.compress(Bitmap.CompressFormat.PNG, 60, baos);
        byte[] b = baos.toByteArray();
        long lengthbmp = b.length;
        Document_img1 = Base64.encodeToString(b, Base64.DEFAULT);

        Log.d("byte_image", String.valueOf(lengthbmp));

        return Document_img1;
    }

    public Bitmap getResizedBitmap(Bitmap image, int maxSize) {
        int width = 120;
        int height = 180;

        float bitmapRatio = (float)width / (float) height;
        if (bitmapRatio > 1) {
            width = maxSize;
            height = (int) (width / bitmapRatio);
        } else {
            height = maxSize;
            width = (int) (height * bitmapRatio);
        }
        return Bitmap.createScaledBitmap(image, width, height, true);
    }

誰もがこれを体験したのですか?私はすでにここに同様の問題を探して、私はまだそれを修正傾けます。私はちょうどそれがBase64でエンコード画像とを表示する必要があるが、それは私が考えるリサイズ上のエラーを持っています。

  • ここで私は取得していますエラーです。

java.io.FileNotFoundException:/storage/emulated/0/temp.jpg:オープンに失敗しました:EACCES(パーミッション拒否)AndroidRuntime:致命的な例外:デコードストリームにできない主なプロセス:com.example.eplife、PID:1494 java.langで.RuntimeException:失敗送達結果ResultInfo {ヌル=、リクエスト= 105、結果= -1、データ=意図{DAT =内容://メディア/外部/画像/メディア/ 592 FLG = 0x1の(補足を有する)}}にアンドロイドでヌル・オブジェクト・リファレンス上の仮想メソッドを起動しようと「INT android.graphics.Bitmap.getWidth()」:活性{com.example.eplife / com.example.eplife.ProfileModule.ChangePhoto}:java.lang.NullPointerExceptionが。 android.app.ActivityThread.access $ 1600〜android.app.ActivityThread.handleSendResult(ActivityThread.java:5041)でapp.ActivityThread.deliverResults(ActivityThread.java:4998)(ActivityThread.java:android.os.Looper.loop(Looper.java:148でandroid.os.Handler.dispatchMessage(Handler.java:102)でandroid.app.ActivityThread $ H.handleMessage(ActivityThread.java:1875))で229)ででcom.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1321)でjava.lang.reflect.Method.invoke(ネイティブメソッド)でandroid.app.ActivityThread.main(ActivityThread.java:7325) com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1211)に起因:java.lang.NullPointerExceptionが:でヌル・オブジェクト・リファレンス上の仮想メソッドを呼び出すための試み「INT android.graphics.Bitmap.getWidth()」 com.exampleでcom.example.eplife.ProfileModule.ChangePhoto.getResizedBitmapでandroid.graphics.Bitmap.createScaledBitmap(Bitmap.java:748)(ChangePhoto.java:239)。android.app.ActivityThreadでandroid.app.ActivityThread.deliverResults(ActivityThread.java:4994)でandroid.app.Activity.dispatchActivityResult(Activity.java:7165)でeplife.ProfileModule.ChangePhoto.onActivityResult(ChangePhoto.java:206) android.os.Handler.dispatchMessageでandroid.app.ActivityThread $ H.handleMessage(ActivityThread.java:1875)でandroid.app.ActivityThread.access $ 1600〜.handleSendResult(ActivityThread.java:5041)(ActivityThread.java:229) java.lang.reflect.Method.invokeでandroid.app.ActivityThread.main(ActivityThread.java:7325)でandroid.os.Looper.loop(Looper.java:148)で(Handler.java:102)(ネイティブメソッド)com.android.internalでcom.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1321)で。os.ZygoteInit.main(ZygoteInit.java:1211) 

私は私のOnCreate活動にこれを置いていました

   if (ContextCompat.checkSelfPermission(ChangePhoto.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(ChangePhoto.this, new String[]{Manifest.permission.CAMERA}, 1);
        }
Janessa・バウティスタ:

私はすでに、エラーが何であるかを考え出しました。

それが許可されます。

その最初、私はこのことを宣言する必要があります。

    private static final int REQUEST_EXTERNAL_STORAGE = 1;
    private static String[] PERMISSIONS_STORAGE = {
            Manifest.permission.READ_EXTERNAL_STORAGE,
            Manifest.permission.WRITE_EXTERNAL_STORAGE
    };

このOnCreate関数への

        // Check if we have read or write permission
        if (ContextCompat.checkSelfPermission(ChangePhoto.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(ChangePhoto.this, new String[]{Manifest.permission.CAMERA}, 101);
        }

        int writePermission = ActivityCompat.checkSelfPermission(ChangePhoto.this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
        int readPermission = ActivityCompat.checkSelfPermission(ChangePhoto.this, Manifest.permission.READ_EXTERNAL_STORAGE);

        if (writePermission != PackageManager.PERMISSION_GRANTED || readPermission != PackageManager.PERMISSION_GRANTED) {
            // We don't have permission so prompt the user
            ActivityCompat.requestPermissions(
                    ChangePhoto.this,
                    PERMISSIONS_STORAGE,
                    REQUEST_EXTERNAL_STORAGE
            );
        }
        //End

そして、ビットマップの問題は解決されます。私は、この問題を読んで唯一のマシュマロのバージョンであるので、これはAndroidのバージョンに依存だと思います。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=13117&siteId=1