Android调用系统裁剪的方法

Android调用系统裁剪,这个已经使用的很熟悉了。但是近期项目里使用的时候遇到了一些小问题,所以在此整理一下,以作记录。

首先看代码:

Intent intent1 = new Intent("com.android.camera.action.CROP");
            intent1.setDataAndType(Uri.fromFile(new File(image.path)), "image/*");
            intent1.putExtra("crop", "true");
            intent1.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(tempFile));//
            intent1.putExtra("aspectX", 1);
            intent1.putExtra("aspectY", 1);
            intent1.putExtra("outputFormat", Bitmap.CompressFormat.JPEG);
            intent1.putExtra("outputX", 720);
            intent1.putExtra("outputY", 720);
            intent1.putExtra("return-data", false);
            startActivityForResult(intent1, 0x222);

这是修改之前的部分,看着没有任何问题,裁剪能正常进行。而且输出尺寸720*720已经算是比较小了,但是问题出现了,在裁剪图片只使用一小块的时候,图片周围出现了黑框。

一开始没明白黑框是怎么加上去的,以后是服务端处理后加的(服务端多上传到服务器的图片都做了压缩,一般显示缩略图)。但是经过仔细查看,才发现图片在我上传之前就有了黑框,那问题就自然是出在我这里了。

查了好多资料,终究还是发现了问题的所在。因为在裁剪大图片或是高清图时,不管取多小,都不会有黑框,这就自然想到了裁剪后会有边缘的自动填充。

知道了问题的所在,就好解决了,然后就查找解决方法,跟想法一样,就是当图片裁剪后过小时,做填充拉伸。后来找到了这条属性,是这样的:

intent.putExtra("scale", true);
    intent.putExtra("scaleUpIfNeeded", true);

这里不做解释,英文的代码都是有实际意义的,看字面意思差不多都能理解。

在用到了这两条重要的属性之后呢,我的裁剪方法就OK了,修改之后代码是这样的:

Intent intent1 = new Intent("com.android.camera.action.CROP");
            intent1.setDataAndType(Uri.fromFile(new File(image.path)), "image/*");
            intent1.putExtra("crop", "true");
            intent1.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(tempFile));//
            intent1.putExtra("aspectX", 1);
            intent1.putExtra("aspectY", 1);
            intent1.putExtra("outputFormat", Bitmap.CompressFormat.JPEG);
            intent1.putExtra("outputX", 720);
            intent1.putExtra("outputY", 720);
            intent1.putExtra("scale", true);
            intent1.putExtra("scaleUpIfNeeded", true);
            intent1.putExtra("return-data", false);
            startActivityForResult(intent1, 0x222);

因为在代码中加入了这一句:

 intent1.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(tempFile));//

即指定了目标文件,所以在onActivityResult里面可以直接使用tempFile。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值