首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >图片覆盖Android Studio

图片覆盖Android Studio
EN

Stack Overflow用户
提问于 2016-08-04 18:34:15
回答 1查看 358关注 0票数 0

我的程序的目标是从SD卡中获取一个图像,将其传递给CombinePhotos类中的一个函数(以及另一个图像),该函数将返回两个位图类型的图像中的一个。我得把它改写成SD卡里的那个。以下是我的代码,但它总是崩溃。请帮帮我。

代码语言:javascript
复制
private void combinePhotos() throws IOException {
    CombinePhotos combinePhotos = new CombinePhotos();
    Bitmap bm1 = BitmapFactory.decodeFile(Environment.getExternalStorageState() + "/GeoOverlay/pic.jpg");
    Bitmap bm2 = BitmapFactory.decodeResource(this.getResources(), R.drawable.sample);
    Bitmap bmFinal = combinePhotos.combine(bm1, bm2);
    File newFile = new File(Environment.getExternalStorageDirectory()+"/GeoOverlay/pic.jpg");
    FileOutputStream bos = new FileOutputStream(Environment.getExternalStorageDirectory()+"/GeoOverlay/pic.jpg");
    bmFinal.compress(Bitmap.CompressFormat.PNG,85,bos);
    bos.flush();
    bos.close();
}

日志:

代码语言:javascript
复制
08-04 16:12:29.982 2888-5972/com.garnet.dany.geooverlay E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: mounted/GeoOverlay/pic.jpg: open failed: ENOENT (No such file or directory)
08-04 16:12:30.652 2888-5972/com.garnet.dany.geooverlay E/AndroidRuntime: FATAL EXCEPTION: Camera Background
                                                                          Process: com.garnet.dany.geooverlay, PID: 2888
                                                                          java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.graphics.Bitmap.compress(android.graphics.Bitmap$CompressFormat, int, java.io.OutputStream)' on a null object reference
                                                                              at com.garnet.dany.geooverlay.CameraClass.combinePhotos(CameraClass.java:262)
                                                                              at com.garnet.dany.geooverlay.CameraClass.access$200(CameraClass.java:53)
                                                                              at com.garnet.dany.geooverlay.CameraClass$5.onImageAvailable(CameraClass.java:201)
                                                                              at android.media.ImageReader$ListenerHandler.handleMessage(ImageReader.java:648)
                                                                              at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                              at android.os.Looper.loop(Looper.java:148)
                                                                              at android.os.HandlerThread.run(HandlerThread.java:61)
08-04 16:12:30.702 2888-2888/com.garnet.dany.geooverlay E/AndroidCameraApi: onPause
EN

回答 1

Stack Overflow用户

发布于 2016-08-04 18:53:47

根据共享的日志判断,以下变量看起来为空。

代码语言:javascript
复制
Bitmap bmFinal = combinePhotos.combine(bm1, bm2);

因此,在其上调用方法会导致崩溃。java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.graphics.Bitmap.compress(android.graphics.Bitmap$CompressFormat, int, java.io.OutputStream)' on a null object reference

确保.combine方法确实生成了非空输出。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38764955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档