110/17 - Android 6图片剪裁

没想到会因为图片剪裁中断,以前都偷懒使用uCrop,这次想说练习内建的剪裁,结果有够麻烦

Android 6如果要图片剪裁,路径开头是file://,所以要用Uri.fromFile()uri转成真实路径

val intent = Intent("com.android.camera.action.CROP").apply {
    this.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION or Intent.FLAG_GRANT_READ_URI_PERMISSION)
    this.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
    this.putExtra("crop", true)
    this.putExtra("return-data", false)
    this.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString())
    this.putExtra("scale", true)
}

val cropPictureName = "005_crop_${System.currentTimeMillis()}.jpg"

val phoneFile = File(
    Environment.getExternalStoragePublicDirectory("${Environment.DIRECTORY_PICTURES}/AndroidSystem"),
    pictureName
)
val cropPhoneFile = File(
    Environment.getExternalStoragePublicDirectory("${Environment.DIRECTORY_PICTURES}/AndroidSystem"),
    cropPictureName
)


if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) {

    val pictureUri = Uri.fromFile(phoneFile)
    val cropUri = Uri.fromFile(cropPhoneFile)

    intent.setDataAndType(pictureUri, "image/*")
    intent.putExtra(MediaStore.EXTRA_OUTPUT, cropUri)
    Log.d("maho", "intent: $intent")
    cropPictureResultLauncher.launch(intent)
    return@registerForActivityResult
}

<<:  [Day17] 建立订单交易API_10

>>:  Day17-238. Product of Array Except Self

Angular 深入浅出三十天:表单与测试 Day18 - 与 Cypress 的初次见面(上)

昨天跟大家分享了 Cypress 有多厉害之後,大家有没有很期待呢? 这两天就让我来跟大家介绍 C...

Day11 - 物理模拟篇 - 弹跳球世界II - 成为Canvas Ninja ~ 理解2D渲染的精髓

继上一篇我们讲到向量类的建立,接着我们在这一篇文机会提到反射行为的模拟~ 反射这种行为,在反射面为铅...

【第十天 - Flutter Bloc Unit Test+Mocktail 范例】

前言 今日的程序码 => GITHUB 接续上一篇 【第九天 - Flutter Bloc+C...

[Day32] 第三十二课 Azure资讯安全中心-2

继续昨天的进度,今天打开资讯安全中心终於有东西了 可以看到这个仪表板上密密麻麻的建议事项,当然不一定...

[Day9] 均线跨市交易实作

一般如果有在碰一些外汇交易或者加密货币交易的人就知道,这些商品在交易的时候,都是做相对价值的交易,像...