From 826341f2f1b3b3cb1eae87338b6cc78bbeb72500 Mon Sep 17 00:00:00 2001 From: kunfei Date: Tue, 24 May 2022 21:23:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../legado/app/help/config/ReadBookConfig.kt | 4 ++-- .../java/io/legado/app/utils/BitmapUtils.kt | 21 +++---------------- .../java/io/legado/app/utils/QRCodeUtils.kt | 2 +- 3 files changed, 6 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/io/legado/app/help/config/ReadBookConfig.kt b/app/src/main/java/io/legado/app/help/config/ReadBookConfig.kt index a27bb3179..34ef3ab3c 100644 --- a/app/src/main/java/io/legado/app/help/config/ReadBookConfig.kt +++ b/app/src/main/java/io/legado/app/help/config/ReadBookConfig.kt @@ -568,11 +568,11 @@ object ReadBookConfig { 1 -> { val path = "bg" + File.separator + curBgStr() val bitmap = BitmapUtils.decodeAssetsBitmap(appCtx, path, width, height) - BitmapDrawable(resources, bitmap?.copyAndRecycle(width, height)) + BitmapDrawable(resources, bitmap?.resizeAndRecycle(width, height)) } else -> { val bitmap = BitmapUtils.decodeBitmap(curBgStr(), width, height) - BitmapDrawable(resources, bitmap?.copyAndRecycle(width, height)) + BitmapDrawable(resources, bitmap?.resizeAndRecycle(width, height)) } } } catch (e: OutOfMemoryError) { diff --git a/app/src/main/java/io/legado/app/utils/BitmapUtils.kt b/app/src/main/java/io/legado/app/utils/BitmapUtils.kt index dee6ab206..cc8e05681 100644 --- a/app/src/main/java/io/legado/app/utils/BitmapUtils.kt +++ b/app/src/main/java/io/legado/app/utils/BitmapUtils.kt @@ -7,7 +7,6 @@ import android.graphics.Bitmap import android.graphics.Bitmap.Config import android.graphics.BitmapFactory import android.graphics.Color -import android.graphics.Matrix import com.google.android.renderscript.Toolkit import java.io.FileInputStream import java.io.IOException @@ -213,23 +212,10 @@ object BitmapUtils { /** * 获取指定宽高的图片 */ -fun Bitmap.copyAndRecycle(newWidth: Int, newHeight: Int): Bitmap { - val width = this.width - val height = this.height - - //计算压缩的比率 - val scaleWidth = newWidth.toFloat() / width - val scaleHeight = newHeight.toFloat() / height - - //获取想要缩放的matrix - val matrix = Matrix() - matrix.postScale(scaleWidth, scaleHeight) - +fun Bitmap.resizeAndRecycle(newWidth: Int, newHeight: Int): Bitmap { //获取新的bitmap - val bitmap = Bitmap.createBitmap(this, 0, 0, width, height, matrix, true) - + val bitmap = Toolkit.resize(this, newWidth, newHeight) recycle() - return bitmap } @@ -237,8 +223,7 @@ fun Bitmap.copyAndRecycle(newWidth: Int, newHeight: Int): Bitmap { * 高斯模糊 */ fun Bitmap.stackBlur(radius: Int = 8): Bitmap { - val blurredBitmap = this.copy(Config.ARGB_8888, true) - return Toolkit.blur(blurredBitmap, radius) + return Toolkit.blur(this, radius) } /** diff --git a/app/src/main/java/io/legado/app/utils/QRCodeUtils.kt b/app/src/main/java/io/legado/app/utils/QRCodeUtils.kt index 072a2f725..432afa180 100644 --- a/app/src/main/java/io/legado/app/utils/QRCodeUtils.kt +++ b/app/src/main/java/io/legado/app/utils/QRCodeUtils.kt @@ -182,7 +182,7 @@ object QRCodeUtils { hints: Map = DecodeFormatManager.ALL_HINTS ): Result? { if (bitmap.width > reqWidth || bitmap.height > reqHeight) { - val bm = bitmap.copyAndRecycle(reqWidth, reqHeight) + val bm = bitmap.resizeAndRecycle(reqWidth, reqHeight) return parseCodeResult(getRGBLuminanceSource(bm), hints) } return parseCodeResult(getRGBLuminanceSource(bitmap), hints)