kunfei 4 лет назад
Родитель
Сommit
826341f2f1

+ 2 - 2
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) {

+ 3 - 18
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)
 }
 
 /**

+ 1 - 1
app/src/main/java/io/legado/app/utils/QRCodeUtils.kt

@@ -182,7 +182,7 @@ object QRCodeUtils {
         hints: Map<DecodeHintType?, Any?> = 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)