当我在Android中使用Bitmap压缩图像时,我收到错误

时间:2017-12-30 10:27:40

标签: java android android-intent bitmap

我正在使用意图捕获图像并发送到我的服务器,但是当我捕获图像并压缩然后一些移动设备我得到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)

2 个答案:

答案 0 :(得分:0)

替换

OutputStream outputStream = null; 

OutputStream outputStream = new FileOutputStream(f); 

答案 1 :(得分:0)

问题在于这一行

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

outputStreamnull,因此将其作为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);