From 715a5dcab2875e0d1a7f3f80ebacbe8f9236e356 Mon Sep 17 00:00:00 2001 From: AntsyLich <59261191+AntsyLich@users.noreply.github.com> Date: Sun, 28 Aug 2022 19:46:42 +0600 Subject: [PATCH] Long strip split fixes 2.0 (#7882) options was having issues in returning width for some reason Fixes #7880 Fixes #7881 (cherry picked from commit 0e526c36bed52670237165c2e870b154966661b6) --- .../java/eu/kanade/tachiyomi/util/system/ImageUtil.kt | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/ImageUtil.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/ImageUtil.kt index 8d9a5758b..147ab6e64 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/system/ImageUtil.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/ImageUtil.kt @@ -253,16 +253,13 @@ object ImageUtil { inJustDecodeBounds = false } - // Values are stored as they get modified during split loop - val imageWidth = options.outWidth - val splitDataList = options.splitData return try { splitDataList.forEach { splitData -> val splitPath = splitImagePath(imageFilePath, splitData.index) - val region = Rect(0, splitData.topOffset, imageWidth, splitData.bottomOffset) + val region = Rect(0, splitData.topOffset, splitData.outputImageWidth, splitData.bottomOffset) FileOutputStream(splitPath).use { outputStream -> val splitBitmap = bitmapRegionDecoder.decodeRegion(region, options) @@ -318,7 +315,7 @@ object ImageUtil { val options = extractImageOptions(imageStream).apply { inJustDecodeBounds = false } - val region = Rect(0, splitData.topOffset, options.outWidth, splitData.bottomOffset) + val region = Rect(0, splitData.topOffset, splitData.outputImageWidth, splitData.bottomOffset) try { val splitBitmap = bitmapRegionDecoder.decodeRegion(region, options) @@ -339,6 +336,7 @@ object ImageUtil { private val BitmapFactory.Options.splitData get(): List { val imageHeight = outHeight + val imageWidth = outWidth val splitHeight = (getDisplayMaxHeightInPx * 1.5).toInt() // -1 so it doesn't try to split when imageHeight = splitHeight @@ -364,7 +362,7 @@ object ImageUtil { if (remainingHeight <= (optimalSplitHeight / 10)) { outputImageHeight += remainingHeight } - add(SplitData(index, topOffset, outputImageHeight)) + add(SplitData(index, topOffset, outputImageHeight, imageWidth)) } } } @@ -373,6 +371,7 @@ object ImageUtil { val index: Int, val topOffset: Int, val outputImageHeight: Int, + val outputImageWidth: Int, ) { val bottomOffset = topOffset + outputImageHeight }