From 44b6983b3de61b014acc20975c403147119cc264 Mon Sep 17 00:00:00 2001 From: Ivan Iskandar <12537387+ivaniskandar@users.noreply.github.com> Date: Wed, 1 Sep 2021 04:43:29 +0700 Subject: [PATCH] Fix animated image detection (#5826) (cherry picked from commit bd033db84c5b7fe2dbb01886f99c0df456b8f930) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt --- .../ui/reader/viewer/pager/PagerPageHolder.kt | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt index 02f7807a8..074fc2d12 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt @@ -362,17 +362,17 @@ class PagerPageHolder( mergePages(stream, stream2) } // SY <-- + val bais = ByteArrayInputStream(itemStream.readBytes()) try { - val streamBytes = itemStream.readBytes() - val isAnimated = ImageUtil.isAnimatedAndSupported(stream) + val isAnimated = ImageUtil.isAnimatedAndSupported(bais) + bais.reset() val background = if (!isAnimated && viewer.config.automaticBackground) { - ByteArrayInputStream(streamBytes).use { bais -> - ImageUtil.chooseBackground(context, bais) - } + ImageUtil.chooseBackground(context, bais) } else { null } - Triple(streamBytes, isAnimated, background) + bais.reset() + Triple(bais, isAnimated, background) } finally { stream.close() itemStream.close() @@ -380,15 +380,15 @@ class PagerPageHolder( } .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) - .doOnNext { (streamBytes, isAnimated, background) -> - ByteArrayInputStream(streamBytes).use { bais -> + .doOnNext { (bais, isAnimated, background) -> + bais.use { if (!isAnimated) { this.background = background initSubsamplingImageView().apply { - setImage(ImageSource.inputStream(bais)) + setImage(ImageSource.inputStream(it)) } } else { - initImageView().setImage(bais) + initImageView().setImage(it) } } }