当我在android中使用Bitmap压缩图像时,我收到错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当我在android中使用Bitmap压缩图像时,我收到错误相关的知识,希望对你有一定的参考价值。
我正在使用意图捕获图像并发送到我的服务器,但是当我捕获图像和压缩然后一些移动设备我得到bitmap.compress错误。那么如何解决这个问题呢,这是我的代码
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:33:23.485 9564-9564 / com.riya.product.intranet W / System.err:java.lang.NullPointerException:尝试调用虚方法'boolean android.graphics.Bitmap.compress(android.graphics。位图$ CompressFormat,int,java.io.OutputStream)'在空对象引用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:在android.app.ActivityThread.handleSendResult(ActivityThread.ja) va: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)
更换
OutputStream outputStream = null;
同
OutputStream outputStream = new FileOutputStream(f);
问题是这一行
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);
以上是关于当我在android中使用Bitmap压缩图像时,我收到错误的主要内容,如果未能解决你的问题,请参考以下文章