Android 相机/相册 图片裁剪

打开相机

/**
 * 打开相机
 */
private fun startCamera() {
    val outFile = File(CAMERA_PATH)
    try {
        if (outFile.exists()) {
            outFile.delete()
        }
        outFile.createNewFile()
    } catch (e: Exception) {
        Log.e("File", e.message)
    }

    val imgUri: Uri
    imgUri = if (Build.VERSION.SDK_INT >= 24) {
        FileProvider.getUriForFile(this, BuildConfig.APPLICATION_ID + ".provider", outFile)
    } else {
        Uri.fromFile(outFile)
    }
    //启动相机
    val intent = Intent("android.media.action.IMAGE_CAPTURE")
    intent.putExtra(MediaStore.EXTRA_OUTPUT, imgUri)
    startActivityForResult(intent, REQUEST_CODE_CAMERA)
}

打开相册

/**
 * 打开相册
 */
private fun startAlbum() {
    val intent = Intent(Intent.ACTION_PICK, null)
    intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*")
    startActivityForResult(intent, REQUEST_CODE_ALBUM)
}

**使用 uCrop 裁剪

/**
 * 图片裁剪
 */
private fun cropPhoto(uri: Uri) {
    val cropFile = File(CROPED_PATH)
    try {
        if (cropFile.exists()) {
            cropFile.delete()
        }
        cropFile.createNewFile()
    } catch (e: Exception) {
        Log.e("File", e.message)
    }
    val destination = Uri.fromFile(cropFile)
    val option = UCrop.Options()
    option.setCircleDimmedLayer(true)
    option.setShowCropGrid(false)
    option.setHideBottomControls(true)
    option.setStatusBarColor(ContextCompat.getColor(this, R.color.color_cm))
    option.setToolbarColor(ContextCompat.getColor(this, R.color.color_cm))
    UCrop.of(uri, destination)
            .withAspectRatio(1f, 1f)
            .withOptions(option)
            .start(this)
}

详情请参考

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容