2017-12-30 24 views
-2

インテントを使用してイメージをキャプチャしてサーバーに送信しますが、イメージをキャプチャしてからモバイルを圧縮すると、bitmap.compressが表示されますエラー。 33:: だから、これは私のコードビットマップを使用して画像を圧縮するとエラーが発生する

BitmapFactory.Options options = new BitmapFactory.Options(); 
     options.inSampleSize = 8; 
     Bitmap bitmap = BitmapFactory.decodeFile(fileUri.getPath(), options); 


     File f = new File(fileUri.getPath()); 

     OutputStream outputStream = null; 
     bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream); 
     outputStream = new FileOutputStream(f); 
     outputStream.flush(); 
     outputStream.close(); 

     ImageView image = new ImageView(I_kycActivity.this); 
     image.setLayoutParams(new android.view.ViewGroup.LayoutParams(250, 250)); 
     image.setMaxHeight(400); 
     image.setMaxWidth(400); 
     image.setPadding(5, 5, 5, 5); 
     image.setImageBitmap(bitmap); 


     if (phototype.equals("Photo")) { 
      img_photo.setImageBitmap(bitmap); 
      txtphote.setText(f.getName()); 
      imgUrl.add(f.getPath()); 
     } 

とエラーになりますどのようにこの問題を解決するために、みんな

12-30 15である23.485 9564から9564/com.riya.product.intranetのW/System.err:java.lang.NullPointerException:NULLオブジェクト参照で仮想メソッド 'boolean android.graphics.Bitmap.compress(android.graphics.Bitmap $ CompressFormat、int、java.io.OutputStream)'を呼び出そうとしました 12- 30 15:33:23.487 9564-9564/com.riya.product.intranet W/System.err:com.riya.product.salestracker.I_kycActivity.previewCapturedImage(I_kycActivity.java:1124) 12-30 15:33:23.488 9564-9564/com.riya.product.intranet W/System.err:com.riya.product.salestracker.I_kycActivity.onActivityResult(I_kycActivity.java:1257) 12-30 15 :33:23.488 9564-9564/com.riya.product.intranet W/System.err:android.app.Activity.dispatchActivityResult(Activity.java:6919) 12-30 15:33:23.488 9564-9564/com .riya.product.intranet W/System.err:android.app.ActivityThread.deliverResults(ActivityThread.java:4174) 12-30 15:33:23.488 9564-9564/com.riya.product.intranet W/System .err:android.app.ActivityThread.handleSendResult(ActivityThread.java:4221) 12-30 15:33:23.488 9564-9564/com.riya.product.intranet W/System.err:android.app.ActivityThread .wrap20(ActivityThread.java) 12-30 15:33:23.488 9564-9564/com.riya.product.intranet W/System.err:android.app.ActivityThread $ H.handleMes sage(ActivityThread.java:1583) 12-30 15:33:23.488 9564-9564/com.riya.product.intranet W/System.err:android.os.Handler.dispatchMessage(Handler.java:110) 12-30 15:33:23.488 9564-9564/com.riya.product.intranet W/System.err:android.os.Looper.loop(Looper.java:203) 12-30 15:33:23.488 9564 -9564/com.riya.product.intranet W/System.err:android.app.ActivityThread.main(ActivityThread.java:6251) 12-30 15:33:23.488 9564-9564/com.riya.product。イントラネットW/System.err:java.lang.reflect.Method.invoke(ネイティブメソッド) 12-30 15:33:23.488 9564-9564/com.riya.product.intranet W/System.err:at com。 android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1075) 12-30 15:33:23.488 9564-9564/com.riya.product.intranet W/System.err:at com.android.internal .os.ZygoteInit.main(ZygoteInit.java:936)

答えて

0

交換

OutputStream outputStream = new FileOutputStream(f); 
0

問題に

OutputStream outputStream = null; 

のでに引数として渡し、

bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream); 

outputStreamこの時点でnullあり、このラインでありますメソッドはNullPointerExceptionを生成します。

まず、引数として渡す前に初期化する必要があります。次のステートメントでoutputStreamを初期化したようです。その行は次の文の前にあるべきです。

bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream); 

変更

OutputStream outputStream = null; 
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream); 
outputStream = new FileOutputStream(f); 

OutputStream outputStream = new FileOutputStream(f); 
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream); 
+0

にまだ私はいくつかの携帯電話では、エラーを取得しています。例えば。 Moto c + – suraj

+0

[NullPointerExceptionとは何ですか?どうすれば修正できますか?](0120-13-0901) – Yousaf

+0

NullPointerException私が入ったのは bitmap.compress(Bitmap.CompressFormat.JPEG、100、outputStream);この行は です。すべての電話ではなく、いくつかの電話私はこの行にエラーを持っています。特に「Moto c plus」モデル – suraj

関連する問題