Android 图像拉大处理

136 阅读1分钟

将低分辨率图片放大至较高分辨率

/**
 * 图像超分辨率工具
 * */
object ImageSuperResolution {
    // 拉伸像素至 5MP
    fun resizeBitmapTo5MP(originalBitmap: Bitmap): Bitmap {
        //获取原始图片的宽度
        val originalWidth = originalBitmap.width
        
        //获取原始图片的高度
        val originalHeight = originalBitmap.height

        // 计算原始图片的像素数
        val originalPixels = originalWidth * originalHeight
        Log.d("ImageSuperResolution","originalPixels 原始图片像素数: $originalPixels")

        // 计算目标像素数为 5MP
        val targetPixels = 5000000

        // 如果原始图像已经大于或等于 5MP,直接返回原图
        if (originalPixels >= targetPixels) {
            return originalBitmap
        }

        // 计算缩放比例
        val scale = Math.sqrt(targetPixels.toDouble() / originalPixels).toFloat()

        // 使用 Matrix 缩放图片
        val matrix = Matrix()
        matrix.postScale(scale, scale)
        // 返回缩放后的 Bitmap结果

        val bitmapResult = Bitmap.createBitmap(originalBitmap, 0, 0, originalWidth, originalHeight, matrix, true)
        Log.d("ImageSuperResolution","resizeBitmapTo5MP bitmapResult: $bitmapResult")

        return bitmapResult
    }
}