Android实现拍照截取和相册图片截取

Android实现拍照截取和相册图片截取,第1张

概述关于拍照截取相册截取,看了网上很多资料,自己整理了一份比较详细的,供有需要的人参考

关于拍照截取和相册截取,看了网上很多资料,自己整理了一份比较详细的,供有需要的人参考

1  拍照

原理就是通过intent调用系统的相机,拍完照在回调进行 *** 作,成功获取到拍完照的图片根据uri调用系统的裁剪页面,裁剪完也是在回调中进行处理,显示在页面的imagevIEw中。

2  相册选取图片

原理也是通过intent打开系统的图片,用户选择完成以后在回调中根据图片的uri调用系统的裁剪页面,同上。

首先,定义几个常量

public static final int TAKE_PHOTO = 1; public static final int CROP_PHOTO = 2; public static final int ACTION_CHOOSE=3; private Uri imageUri; //图片路径 private String filename; //图片名称 

然后在拍照和相册选择的按钮中处理事件

@OverrIDe   public voID onClick(VIEw v) {     switch (v.getID()) {       case R.ID.bt1:  //拍照截取         SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");         Date date = new Date(System.currentTimeMillis());         filename = format.format(date);         file path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);         file outputimage = new file(path,filename +".jpg");         try {           if (outputimage.exists()) {             outputimage.delete();           }           outputimage.createNewfile();         } catch (IOException e) {           e.printstacktrace();         }         //将file对象转换为Uri并启动照相程序         imageUri = Uri.fromfile(outputimage);         Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); //照相         intent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri); //指定图片输出地址         startActivityForResult(intent,TAKE_PHOTO); //启动照相         break;       case R.ID.bt2:  //相册选取         Intent intent2 = new Intent(Intent.ACTION_PICK);         intent2.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,"image/*");         startActivityForResult(intent2,ACTION_CHOOSE);         break;     }   } 

最主要的在回调中的执行

// 使用startActivityForResult返回结果时调用的方法   @OverrIDe   protected voID onActivityResult(int requestCode,int resultCode,Intent data) {     super.onActivityResult(requestCode,resultCode,data);     if(resultCode!=RESulT_OK){       Toast.makeText(this,"取消了",Toast.LENGTH_SHORT).show();       return;     }     switch (requestCode) {       case TAKE_PHOTO:  //拍照的回调         cropImage();         break;       case ACTION_CHOOSE:  //选择照片的回调         imageUri = data.getData();         cropImage();         break;       case CROP_PHOTO:  //裁剪完照片的回调         showPic();         break;       default:         break;     }   } 

裁剪图片的方法

/**  * 裁剪图片  **/ private voID cropImage() {   Intent intent = new Intent("com.androID.camera.action.CROP"); //剪裁   intent.setDataAndType(imageUri,"image/*");   intent.putExtra("scale",true);   //设置宽高比例   intent.putExtra("aspectX",1);   intent.putExtra("aspectY",1);   //设置裁剪图片宽高   intent.putExtra("outputX",340);   intent.putExtra("outputY",340);   intent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri);   Toast.makeText(MainActivity.this,"剪裁图片",Toast.LENGTH_SHORT).show();   //广播刷新相册   Intent intentBc = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_file);   intentBc.setData(imageUri);   this.sendbroadcast(intentBc);   startActivityForResult(intent,CROP_PHOTO); //设置裁剪参数显示图片至ImageVIEw } 

过程比较简单,可能会有一些判断的地方没有处理,如果有不对的地方希望有高手可以帮忙改进,谢谢~~

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

总结

以上是内存溢出为你收集整理的Android实现拍照截取和相册图片截取全部内容,希望文章能够帮你解决Android实现拍照截取和相册图片截取所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1147425.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存