package com.sw.dualscreen.utils import android.graphics.Bitmap object BitmapCropper { /** * 裁剪Bitmap中心区域为指定尺寸 * @param original 原始Bitmap * @param targetWidth 目标宽度 * @param targetHeight 目标高度 * @return 裁剪后的Bitmap */ fun cropCenter(original: Bitmap, targetWidth: Int, targetHeight: Int, offsetX:Int = 0, offsetY:Int = 0): Bitmap { val originalWidth = original.width val originalHeight = original.height // 计算中心点坐标 var startX = (originalWidth - targetWidth) / 2 + offsetX var startY = (originalHeight - targetHeight) / 2 + offsetY // 边界检查 startX = startX.coerceAtLeast(0) startY = startY.coerceAtLeast(0) val actualWidth = minOf(targetWidth, originalWidth - startX) val actualHeight = minOf(targetHeight, originalHeight - startY) return Bitmap.createBitmap(original, startX, startY, actualWidth, actualHeight).also { // it.setConfig(Bitmap.Config.RGB_565) // it.density = DisplayMetrics.DENSITY_LOW } } } // 使用示例 //fun main() { // // 假设这是从资源加载的Bitmap // val originalBitmap = Bitmap.createBitmap(1000, 1000, Bitmap.Config.ARGB_8888) // // 裁剪中心500x500区域 // val croppedBitmap = BitmapCropper.cropCenter(originalBitmap, 500, 500) // println("裁剪后尺寸:${croppedBitmap.width}x${croppedBitmap.height}") //}