我正在使用意图捕获图像并发送到我的服务器,但是当我捕获图像并压缩然后一些移动设备我得到bitmap.compress错误。 那么如何解决这个问题呢 这是我的代码
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbarSize="3dp"
android:scrollbarThumbVertical="@drawable/scrollbar_black">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/rlFiltersSearchEvent"
android:layout_width="match_parent"
android:layout_height="250dp"
android:background="@drawable/action_bar_gradient">
</RelativeLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/rvListOfEventsMain"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/fab_margin"
android:layout_below="@+id/rlFiltersSearchEvent"
android:nestedScrollingEnabled="false"
android:scrollbars="none" />
</RelativeLayout>
</ScrollView>
,错误是
12-30 15:33:23.485 9564-9564 / com.riya.product.intranet W / System.err:java.lang.NullPointerException:尝试调用虚方法&#39; boolean android.graphics.Bitmap。 compress(android.graphics.Bitmap $ CompressFormat,int,java.io.OutputStream)&#39;在null对象引用上 12-30 15:33:23.487 9564-9564 / com.riya.product.intranet W / System.err:at 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:at 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:at android.app.Activity.dispatchActivityResult(Activity.java:6919) 12-30 15:33:23.488 9564-9564 / com.riya.product.intranet W / System.err:at android.app.ActivityThread.deliverResults(ActivityThread.java:4174) 12-30 15:33:23.488 9564-9564 / com.riya.product.intranet W / System.err:at android.app.ActivityThread.handleSendResult(ActivityThread.java:4221) 12-30 15:33:23.488 9564-9564 / com.riya.product.intranet W / System.err:at android.app.ActivityThread.-wrap20(ActivityThread.java) 12-30 15:33:23.488 9564-9564 / com.riya.product.intranet W / System.err:at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1583) 12-30 15:33:23.488 9564-9564 / com.riya.product.intranet W / System.err:at 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:at android.app.ActivityThread.main(ActivityThread.java:6251) 12-30 15:33:23.488 9564-9564 / com.riya.product.intranet W / System.err:at java.lang.reflect.Method.invoke(Native Method) 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 :(得分:0)
替换
OutputStream outputStream = null;
带
OutputStream outputStream = new FileOutputStream(f);
答案 1 :(得分:0)
问题在于这一行
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream);
此时 outputStream
为null
,因此将其作为compress
方法中的参数传递会生成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);