Android studio 缩放android设备上保存的图像
我正在给用照相机拍摄的照片添加一帧。 保存图像时,如图所示,它看起来太放大了 我正在尝试使用以下代码缩放图像:Android studio 缩放android设备上保存的图像,android-studio,kotlin,Android Studio,Kotlin,我正在给用照相机拍摄的照片添加一帧。 保存图像时,如图所示,它看起来太放大了 我正在尝试使用以下代码缩放图像: private fun getScaledBitMapBaseOnScreenSize(bitmapOriginal: Bitmap): Bitmap? { var scaledBitmap: Bitmap? = null try { val metrics = DisplayMetrics() val width = bitmapOri
private fun getScaledBitMapBaseOnScreenSize(bitmapOriginal: Bitmap): Bitmap? {
var scaledBitmap: Bitmap? = null
try {
val metrics = DisplayMetrics()
val width = bitmapOriginal.width
val height = bitmapOriginal.height
val scaleWidth = metrics.scaledDensity
val scaleHeight = metrics.scaledDensity
// create a matrix for the manipulation
val matrix = Matrix()
// resize the bit map
matrix.postScale(scaleWidth, scaleHeight)
scaledBitmap = Bitmap.createBitmap(bitmapOriginal, 0, 0, width, height, matrix, true)
} catch (e: java.lang.Exception) {
e.printStackTrace()
}
Log.d(TAG, scaledBitmap.toString())
return scaledBitmap
}
getScaledBitmap返回null,查看方法Bitmap.createBitmap内部返回null。更奇怪的是,设备的大小和比例与拍摄的图像相同,因此这种方法实际上是无用的
我想获得正确比例的帧和捕获的图像。我不确定我是否应该调整大小或可能改变我构建关节图像的方式,如下图所示
cameraKitView.captureImage { cameraKitView, capturedImage ->
val date = Date()
val imgName = "Casino Fun $date"
var capturedImage : Bitmap = BitmapFactory.decodeByteArray(
capturedImage, 0, capturedImage.size
)
.copy(Bitmap.Config.ARGB_8888, true)
var canvas = Canvas(capturedImage)
val curFrame = BitmapFactory.decodeResource(resources, activeFrameSource)
val paint = Paint()
canvas.drawBitmap(curFrame, 0f, 0f, paint)
try {
MediaStore.Images.Media.insertImage(
contentResolver,
getScaledBitMapBaseOnScreenSize(capturedImage),
imgName,
"Image Saved"
)
} catch (e: IOException) {
e.printStackTrace()
}
问题在于curFrame位图,它的大小要比takenImage大得多,所以我必须使用
val scaledFrame = Bitmap.createScaledBitmap(curFrame, takenImage.width, takenImage.height, false)
我建议的另一件事是验证你得到的设计