优化
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package com.sw.dualscreen.utils
|
||||
import android.graphics.Bitmap
|
||||
|
||||
|
||||
object BitmapCropper {
|
||||
/**
|
||||
* 裁剪Bitmap中心区域为指定尺寸
|
||||
@@ -9,30 +10,33 @@ object BitmapCropper {
|
||||
* @param targetHeight 目标高度
|
||||
* @return 裁剪后的Bitmap
|
||||
*/
|
||||
fun cropCenter(original: Bitmap, targetWidth: Int, targetHeight: Int): 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
|
||||
var startY = (originalHeight - targetHeight) / 2
|
||||
|
||||
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)
|
||||
|
||||
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}")
|
||||
}
|
||||
//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}")
|
||||
//}
|
||||
|
||||
Reference in New Issue
Block a user