如何使用Kotlin在Android中压缩照片

如何使用Kotlin在Android中压缩照片,android,kotlin,compression,photo,Android,Kotlin,Compression,Photo,这是我在智能手机上拍照的代码,问题是图像太大了,我想压缩它,有什么帮助或想法吗 谢谢你的信息 方法ABRICAMARA()的执行 当用户从权限请求弹出窗口中按permission或DENY时调用 override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) { when(requestCode){

这是我在智能手机上拍照的代码,问题是图像太大了,我想压缩它,有什么帮助或想法吗

谢谢你的信息

方法ABRICAMARA()的执行

当用户从权限请求弹出窗口中按permission或DENY时调用

override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {

    when(requestCode){
        PERMISSION_CODE -> {
            if (grantResults.size > 0 && grantResults[0] ==
                PackageManager.PERMISSION_GRANTED){
                //permiso de popup fue concedido
                abrirCamara()
            }
            else{
                //el permiso de popup fue denegado
                Toast.makeText(this, "Permiso denegado", Toast.LENGTH_SHORT).show()
            }
        }
    }
}

你可以使用这个图书馆

implementation 'id.zelory:compressor:2.1.0'
更改代码

从代码中,图像文件名为rutaFinal

//if you need bitmap
val bitmap = Compressor(this).compressToBitmap(rutaFinal)

//if you need file
val compressedImageFile = Compressor(this).compressToFile(rutaFinal)
完整代码

 if (resultCode == Activity.RESULT_OK){


        //configurar imagen capturada a vista de imagen
        imgEnvio.setImageURI(image_uri)
        pasar = image_uri.toString()


        val tempUri = image_uri

        val rutaFinal = File(getRealPathFromURI(tempUri))
        pasoRuta=rutaFinal.toString()

        //chnage here
        //pass context to Compressor
        val bitmap = Compressor(this).compressToBitmap(rutaFinal);


        captura_btn.visibility =View.INVISIBLE
        siguiente.visibility=View.VISIBLE

    }
使用

传入原始图像文件,并将调整大小的图像作为新文件获取

File resizedImage = new Resizer(this)
    .setTargetLength(1080)
    .setQuality(80)
    .setOutputFormat("JPEG")
    .setOutputFilename("resized_image")
    .setOutputDirPath(storagePath)
    .setSourceImage(originalImage)
    .getResizedFile();
使用

格拉德尔

dependencies {
implementation 'id.zelory:compressor:3.0.0'
}
压缩图像文件

val compressedImageFile = Compressor.compress(context, actualImageFile)
将图像文件压缩到特定目标

val compressedImageFile = Compressor.compress(context, actualImageFile) {
default()
destination(myFile)
}
使用默认约束和自定义局部约束

val compressedImageFile = Compressor.compress(context, actualImageFile) {
default(width = 640, format = Bitmap.CompressFormat.WEBP)
}
完全自定义约束

val compressedImageFile = Compressor.compress(context, actualImageFile) {
resolution(1280, 720)
quality(80)
format(Bitmap.CompressFormat.WEBP)
size(2_097_152) // 2 MB
}

val compressedImageFile = Compressor.compress(context, actualImageFile) {
    resolution(1280, 720)
    quality(80)
    format(Bitmap.CompressFormat.WEBP)
    size(2_097_152) // 2 MB
    }

val compressedImageFile = Compressor.compress(context, actualImageFile) {
    resolution(1280, 720)
    quality(80)
    format(Bitmap.CompressFormat.WEBP)
    size(2_097_152) // 2 MB
    }

val compressedImageFile = Compressor.compress(context, actualImageFile) {
    resolution(1280, 720)
    quality(80)
    format(Bitmap.CompressFormat.WEBP)
    size(2_097_152) // 2 MB
}
?
val compressedImageFile = Compressor.compress(context, actualImageFile) {
default()
destination(myFile)
}
val compressedImageFile = Compressor.compress(context, actualImageFile) {
default(width = 640, format = Bitmap.CompressFormat.WEBP)
}
val compressedImageFile = Compressor.compress(context, actualImageFile) {
resolution(1280, 720)
quality(80)
format(Bitmap.CompressFormat.WEBP)
size(2_097_152) // 2 MB
}

val compressedImageFile = Compressor.compress(context, actualImageFile) {
    resolution(1280, 720)
    quality(80)
    format(Bitmap.CompressFormat.WEBP)
    size(2_097_152) // 2 MB
    }

val compressedImageFile = Compressor.compress(context, actualImageFile) {
    resolution(1280, 720)
    quality(80)
    format(Bitmap.CompressFormat.WEBP)
    size(2_097_152) // 2 MB
    }

val compressedImageFile = Compressor.compress(context, actualImageFile) {
    resolution(1280, 720)
    quality(80)
    format(Bitmap.CompressFormat.WEBP)
    size(2_097_152) // 2 MB
}