Android调用系统裁剪的实现方法

  

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

  

        意图intent1=new意图(“com.android.camera.action.CROP”);   intent1.setDataAndType (Uri.fromFile(新文件(image.path)),“图像/*”);   intent1。putExtra(“作物”,“真正的”);   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(“返回数据”,假);   startActivityForResult (intent1 0 x222);      

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

  

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

  

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

  

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

        意图。putExtra(“规模”,真正的);   意图。putExtra (“scaleUpIfNeeded”,真的);      

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

  

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

        意图intent1=new意图(“com.android.camera.action.CROP”);   intent1.setDataAndType (Uri.fromFile(新文件(image.path)),“图像/*”);   intent1。putExtra(“作物”,“真正的”);   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(“规模”,真正的);   intent1。putExtra (“scaleUpIfNeeded”,真正的);   intent1。putExtra(“返回数据”,假);   startActivityForResult (intent1 0 x222);      

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

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

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

  

以上这篇Android调用系统裁剪的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

Android调用系统裁剪的实现方法