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

所属分类: 软件编程 / Android 阅读数: 34
收藏 0 赞 0 分享

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。

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

更多精彩内容其他人还在看

Android中加入名片扫描功能实例代码

这篇文章主要介绍了Android中加入名片扫描功能实例代码的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

Android仿微信发表说说实现拍照、多图上传功能

这篇文章主要为大家详细介绍了Android仿微信发表说说实现拍照、多图上传功能,使用Retrofit2.0技术,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

设置Android系统永不锁屏永不休眠的方法

在进行Android系统开发的时候,有些特定的情况需要设置系统永不锁屏,永不休眠。本篇文章给大家介绍Android 永不锁屏,开机不锁屏,删除设置中休眠时间选项,需要的朋友一起学习吧
收藏 0 赞 0 分享

Android Retrofit 2.0框架上传图片解决方案

这篇文章主要介绍了Android Retrofit 2.0框架上传一张与多张图片解决方案,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android自定义等待对话框

这篇文章主要为大家详细介绍了Android自定义等待对话框的实现方法,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android中Window添加View的底层原理

这篇文章主要介绍了Android中Window添加View的底层原理,需要的朋友可以参考下
收藏 0 赞 0 分享

Android调用系统默认浏览器访问的方法

这篇文章主要介绍了Android调用系统默认浏览器访问的方法的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

Android开发退出程序的方法汇总

Android程序有很多Activity,比如说主窗口A,调用了子窗口B,子窗口B又调用子窗口C,back返回子窗口B后,在B中如何关闭整个Android应用程序呢? 下面脚本之家小编就给大家介绍android开发退出程序的几种方法,感兴趣的朋友参考下吧
收藏 0 赞 0 分享

Android程序开发中单选按钮(RadioGroup)的使用详解

在android程序开发中,无论是单选按钮还是多选按钮都非常的常见,接下来通过本文给大家介绍Android程序开发中单选按钮(RadioGroup)的使用,需要的朋友参考下吧
收藏 0 赞 0 分享

Android实现仿网易今日头条等自定义频道listview 或者grideview等item上移到另一个view中

这篇文章主要介绍了Android实现仿网易今日头条等自定义频道listview 或者grideview等item上移到另一个view中 的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多