android系统自带的有裁剪图片功能,在应用过程中,碰到了诸多问题,在些做个记录:

代码如下,注释很详细,记得加写入sd卡数据的权限

public class MainActivity extends Activity {

private static final int TAKE_BIG_PICTURE = 100;

private static final int TAKE_SMALL_PICTURE = 101;

private static final int CROP_BIG_PICTURE = 102;

private static final int CROP_SMALL_PICTURE = 103;

private Button pick_photo, take_photo;

private static final String IMAGE_FILE_LOCATION = "file:///sdcard/temp.jpg";

Uri imageUri = Uri.parse(IMAGE_FILE_LOCATION);

private ImageView imageView;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

pick_photo = (Button) findViewById(R.id.bt_gallery);

take_photo = (Button) findViewById(R.id.bt_camera);

imageView = (ImageView) findViewById(R.id.iv_photo);

pick_photo.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

//启动图片库

Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

startActivityForResult(intent, TAKE_SMALL_PICTURE);

}

});

take_photo.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

//启动相机去拍照,直接传入了uri,照完以后,会把照片直接存储到这个uri

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);//action is capture

intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);

startActivityForResult(intent, TAKE_BIG_PICTURE);//or TAKE_SMALL_PICTURE

}

});

}

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

switch (requestCode) {

case TAKE_BIG_PICTURE:

//照相机照完以后返回结果,因为在启动相机的时候,已经指定了uri,所以可以直接从这个uri取

//调用裁剪方法(注意,这里没有判断是否为空,应用中应该判断)

cropImageUri(imageUri, 800, 400, CROP_BIG_PICTURE);

break;

case TAKE_SMALL_PICTURE:

//调用图片库在这里返回结果

//调用裁剪方法(注意,这里没有判断是否为空,应用中应该判断)

cropImageUri(data.getData(), 300, 150, CROP_SMALL_PICTURE);

break;

case CROP_BIG_PICTURE:

//这里是相机裁剪后的返回

//可以参照裁剪方法,里面已经指定了uri,所以在这里,直接可以从里面取uri,然后获取bitmap,并且设置到imageview

try {

Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri);

imageView.setImageBitmap(bitmap);

} catch (IOException e) {

e.printStackTrace();

}

break;

case CROP_SMALL_PICTURE:

//这里是调用图片库裁剪后的返回

//可以参照裁剪方法,里面已经指定了uri,所以在这里,直接可以从里面取uri,然后获取bitmap,并且设置到imageview

try {

Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri);

imageView.setImageBitmap(bitmap);

} catch (IOException e) {

e.printStackTrace();

}

break;

}

super.onActivityResult(requestCode, resultCode, data);

}

private void cropImageUri(Uri uri, int outputX, int outputY, int requestCode) {

Intent intent = new Intent("com.android.camera.action.CROP");

intent.setDataAndType(uri, "image/*");

//是否裁剪

intent.putExtra("crop", "true");

//设置xy的裁剪比例

intent.putExtra("aspectX", 2);

intent.putExtra("aspectY", 1);

//设置输出的宽高

intent.putExtra("outputX", outputX);

intent.putExtra("outputY", outputY);

//是否缩放

intent.putExtra("scale", false);

//输入图片的Uri,指定以后,可以在这个uri获得图片

intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);

//是否返回图片数据,可以不用,直接用uri就可以了

intent.putExtra("return-data", false);

//设置输入图片格式

intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());

//是否关闭面部识别

intent.putExtra("noFaceDetection", true); // no face detection

//启动

startActivityForResult(intent, requestCode);

}

}

开发过程中遇到的问题:

1、我还看到网上有一些其它写法,选择图片库,直接返回图片数据。那样太占内存,不如直接返回uri,用的时候,再去取图片。

2、Android java.io.FileNotFoundException: open failed: EACCES (Permission denie

华为手机,老是取不到图片,读log,是因为权限问题,我们浪费了很长时间,最后查明,是手机连在电脑上处于调用状态的原因,

有些手机,连上电脑以后,sd卡是不可读取的,所以才会出现权限问题,这个大家可以注意一下

android 自动剪裁图片,android使用系统裁剪图片相关推荐

  1. 安卓图片操作(调用系统相机,预览本地照片,调用系统裁剪图片,压缩图片,中心裁剪方形图片,bitmap转byte[])

    先创建照片存储uri public static Uri createImagePathUri(Context context) {Uri imageFilePath = null;String st ...

  2. android调用系统裁剪图片 返回模糊 不清晰的问题

    基本这个功能都是在头像设置的时候会用到 Android 从相机拍完照片 然后跳去系统自带的裁剪 或者从相册选取图片裁剪  然后把裁剪好的图片设置成头像 这里直接贴上跳到裁剪部分的代码 private ...

  3. android 自动播放 幻灯片,Android自动播放Banner图片轮播效果

    本文实例为大家分享了Android自动播放Banner图片轮播的具体代码,供大家参考,具体内容如下 先看一下效果图 支持本地图片以及网络图片or本地网络混合. 使用方式: android:id=&qu ...

  4. 解决小米miui系统调用系统裁剪图片功能camera.action.CROP后崩溃或重新打开app的问题

    选择相册图片(或调用MediaStore.ACTION_IMAGE_CAPTURE拍照),然后裁剪.在其他系统上都测试正常,但是在小米上出现了问题.小米2s上,裁剪后点击确定直接卡死系统:小米3上,裁 ...

  5. 解决小米miui系统调用系统裁剪图片功能崩溃失败的问题

    项目中选择图片作为头像,都要经过剪裁的过程.一般我们都调用系统剪裁的方法.不过该方法在其它系统上都显示正常,但是在miui系统上就出错了.经测试发现其他系统 cropBitmap = data.get ...

  6. android 自动 键盘,关于Android中的软键盘

    InputMethodService为我们的输入法创建了一个Dialog,并且将该Dialog的Window的某些参数(如Gravity)进行了设置,使之能够在底部或者全屏显示.当我们点击输入框时,系 ...

  7. android自动创建快捷方式,Android开发之生成桌面快捷方式细则(原创)

    本文已独家授权 郭霖 ( guolin_blog) 公众号发布! 申明,标题里的快捷方式不是指开发人员使用频率极高的Ctrl+C和Ctrl+V:也不是IDE里Ctrl+D.Ctrl+F等常用快捷键.这 ...

  8. android自动夜间模式,Android实现日夜间模式的深入理解

    在本篇文章中给出了三种实现日间/夜间模式切换的方案,三种方案综合起来可能导致文章的篇幅过长,请耐心阅读. 1.使用 setTheme的方法让 Activity重新设置主题: 2.设置 Android ...

  9. android 自动挂断,android 来电自动接听和自动挂断(2.3以上)

    转自http://stephen830.iteye.com/blog/1181786java android 来电自动接听和自动挂断android 注意:android2.3版本不支持下面的自动接听方 ...

  10. android自动更新demo,Android程序自动更新功能模块的实现方法【附完整demo源码下载】...

    本文实例讲述了Android程序自动更新功能模块的实现方法.分享给大家供大家参考,具体如下: 在程序启动的时候检测服务器上有没有对应版本更新,如果有更新,提示用户是否更新. 在程序启动的时候首先调用更 ...

最新文章

  1. tomcat 内存配置学习总结
  2. 提高抗打击能力_输不起、爱放弃,孩子抗挫能力差怎么办?3招教你培养孩子抗挫力...
  3. html怎么防止修改数据,HTML防数据采集
  4. EqualsBuilder和HashCodeBuilder
  5. 螺旋测微器 flash_使用测微计收集应用程序指标
  6. MySQL创建数据库与创建用户以及授权
  7. 神结合!一招玩转K8s和微服务治理
  8. VS封装给Unity使用的DLL
  9. 时延与传输速率、带宽延时
  10. 比大小 log_2^3 与 log_3^5
  11. 限时删!我亲自整理一套目标检测、卷积神经网络和OpenCV学习资料(教程/PPT/代码)...
  12. apache log分析
  13. NumPy库---数组的基本操作
  14. python判断不等_Python爬取620首虾米歌曲,揭秘五月天为什么狂吸粉?!
  15. linux后台执行命令与putty打开程序界面 screen
  16. ae 的动画导出为html,Bodymovin v5.5.5 AE脚本可以导出json格式在Web动画制作工具
  17. 串口通讯 电脑和dsp_Sci 使用DSP2812的SCIA模块和PC机进行串口通信,用FIFO功能实现数据的发送和接受。 DSP program 261万源代码下载- www.pudn.com...
  18. 小米笔记本充电实测追求速度牺牲兼容性小米笔记本充电驱动_开学劲薄之高性价比笔记本电脑选购指南...
  19. Harris角点检测 及 Matlab实验
  20. 9.29 正睿提高6

热门文章

  1. python储物柜难题_转角那1㎡不做储物间?太浪费了!好好利用还解决收纳难题...
  2. 数字逻辑电路——反演规则与对偶规则
  3. Spring Boot—Controller 注解
  4. SSRS 锁定标题栏
  5. Android ToolBar修改返回按钮图标
  6. pb一步步开发APP
  7. ISE UCF 写法
  8. 计算机excel怎么删除重复项,在Excel中巧妙提示重复输入和删除重复数据
  9. 在vue中使用marked解析MARKDOWN,生成目录,运行代码示例
  10. html边框如何制作三角形,如何用css3绘制有边框的三角形