Piasy / BigImageViewer

Big image viewer supporting pan and zoom, with very little memory usage and full featured image loading choices. Powered by Subsampling Scale Image View, Fresco, Glide, and Picasso. Even with gif and webp support! 🍻
MIT License
3.97k stars 399 forks source link

Some image saveImageIntoGallery failed. #181

Open xilost opened 4 years ago

xilost commented 4 years ago

like this image: http://file.hd.weibo.com/weibo_alk/material/201511/1446544022910.png.

E/MediaStore: Failed to insert image java.lang.NullPointerException: Attempt to invoke virtual method 'int android.graphics.Bitmap.getWidth()' on a null object reference at android.provider.MediaStore$Images$Media.StoreThumbnail(MediaStore.java:930) at android.provider.MediaStore$Images$Media.insertImage(MediaStore.java:999) at android.provider.MediaStore$Images$Media.insertImage(MediaStore.java:910) at com.weibo.wbalk.widget.bigimageviewer.view.BigImageView.saveImageIntoGallery(BigImageView.java:318) at com.weibo.wbalk.mvp.ui.activity.PhotoAlbumActivity$4.accept(PhotoAlbumActivity.java:555) at com.weibo.wbalk.mvp.ui.activity.PhotoAlbumActivity$4.accept(PhotoAlbumActivity.java:540) at io.reactivex.internal.observers.LambdaObserver.onNext(LambdaObserver.java:63) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.tryEmitScalar(ObservableFlatMap.java:236) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.subscribeInner(ObservableFlatMap.java:146) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.onNext(ObservableFlatMap.java:139) at io.reactivex.internal.operators.observable.ObservableBuffer$BufferExactObserver.onNext(ObservableBuffer.java:113) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.tryEmit(ObservableFlatMap.java:265) at io.reactivex.internal.operators.observable.ObservableFlatMap$InnerObserver.onNext(ObservableFlatMap.java:562) at io.reactivex.observers.SerializedObserver.onNext(SerializedObserver.java:111) at io.reactivex.internal.operators.observable.ObservableConcatMap$SourceObserver$InnerObserver.onNext(ObservableConcatMap.java:252) at io.reactivex.internal.operators.observable.ObservableScalarXMap$ScalarDisposable.run(ObservableScalarXMap.java:248) at io.reactivex.internal.operators.observable.ObservableJust.subscribeActual(ObservableJust.java:35) at io.reactivex.Observable.subscribe(Observable.java:12267) at io.reactivex.internal.operators.observable.ObservableConcatMap$SourceObserver.drain(ObservableConcatMap.java:223) at io.reactivex.internal.operators.observable.ObservableConcatMap$SourceObserver.onSubscribe(ObservableConcatMap.java:103) at io.reactivex.internal.operators.observable.ObservableFromIterable.subscribeActual(ObservableFromIterable.java:55) at io.reactivex.Observable.subscribe(Observable.java:12267) at io.reactivex.internal.operators.observable.ObservableConcatMap.subscribeActual(ObservableConcatMap.java:53) at io.reactivex.Observable.subscribe(Observable.java:12267) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.subscribeInner(ObservableFlatMap.java:165) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.onNext(ObservableFlatMap.java:139) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.tryEmitScalar(ObservableFlatMap.java:236) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.subscribeInner(ObservableFlatMap.java:146) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.onNext(ObservableFlatMap.java:139) at io.reactivex.internal.operators.observable.ObservableFromArray$FromArrayDisposable.run(ObservableFromArray.java:108) at io.reactivex.internal.operators.observable.ObservableFromArray.subscribeActual(ObservableFromArray.java:37) at io.reactivex.Observable.subscribe(Observable.java:12267) at io.reactivex.internal.operators.observable.ObservableFlatMap.subscribeActual(ObservableFlatMap.java:55) at io.reactivex.Observable.subscribe(Observable.java:12267) at io.reactivex.internal.operators.observable.ObservableFlatMap.subscribeActual(ObservableFlatMap.java:55) at io.reactivex.Observable.subscribe(Observable.java:12267) at io.reactivex.internal.operators.observable.ObservableBuffer.subscribeActual(ObservableBuffer.java:44) at io.reactivex.Observable.subscribe(Observable.java:12267) 2019-10-29 17:53:32.361 24445-24445/com.weibo.wbalk E/MediaStore: at io.reactivex.internal.operators.observable.ObservableFlatMap.subscribeActual(ObservableFlatMap.java:55) at io.reactivex.Observable.subscribe(Observable.java:12267) at io.reactivex.Observable.subscribe(Observable.java:12253) at io.reactivex.Observable.subscribe(Observable.java:12181) at com.weibo.wbalk.mvp.ui.activity.PhotoAlbumActivity.onClick(PhotoAlbumActivity.java:540) at com.weibo.wbalk.mvp.ui.activity.PhotoAlbumActivity_ViewBinding$3.doClick(PhotoAlbumActivity_ViewBinding.java:85) at butterknife.internal.DebouncingOnClickListener.onClick(DebouncingOnClickListener.java:18) at android.view.View.performClick(View.java:6407) at android.view.View$PerformClick.run(View.java:25175) at android.os.Handler.handleCallback(Handler.java:790) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:198) at android.app.ActivityThread.main(ActivityThread.java:7015) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:523) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:850)

Piasy commented 4 years ago

Could you please reproduce and debug it in the demo project?