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)