全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

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

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拍照截取  # Android相册获取图片截取  # Android实现选择相册图片并显示功能  # android获取相册图片和路径的实现方法  # android加载系统相册图片并显示详解  # 回调  # 拍完  # 的人  # 几个  # 是在  # 看了  # 最主要  # 转换为  # 大家多多  # 取消了  # 网上  # switch  # View  # getId  # case  # id  # filename  # String  # imageUri  # onClick 


相关文章: 建站之星导航配置指南:自助建站与SEO优化全解析  如何在Golang中使用replace替换模块_指定本地或远程路径  如何快速搭建二级域名独立网站?  平台云上自助建站如何快速打造专业网站?  已有域名建站全流程解析:网站搭建步骤与建站工具选择  深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?  如何选购建站域名与空间?自助平台全解析  如何快速搭建响应式可视化网站?  香港服务器网站卡顿?如何解决网络延迟与负载问题?  Swift开发中switch语句值绑定模式  如何通过cPanel快速搭建网站?  建站之星导航菜单设置与功能模块配置全攻略  建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析  如何快速搭建个人网站并优化SEO?  如何零基础开发自助建站系统?完整教程解析  网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?  宝塔面板如何快速创建新站点?  成都响应式网站开发,dw怎么把手机适应页面变成网页?  简单实现Android文件上传  上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?  网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?  ,网页ppt怎么弄成自己的ppt?  网站制作新手教程,新手建设一个网站需要注意些什么?  如何快速辨别茅台真假?关键步骤解析  建站之星ASP如何实现CMS高效搭建与安全管理?  建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略  如何有效防御Web建站篡改攻击?  html制作网站的步骤有哪些,iapp如何添加网页?  建站之星后台密码遗忘?如何快速找回?  建站三合一如何选?哪家性价比更高?  如何高效利用亚马逊云主机搭建企业网站?  图册素材网站设计制作软件,图册的导出方式有几种?  建站主机如何选?高性价比方案全解析  php json中文编码为null的解决办法  建站之星云端配置指南:模板选择与SEO优化一键生成  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  如何选择美橙互联多站合一建站方案?  官网自助建站平台指南:在线制作、快速建站与模板选择全解析  C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)  制作充值网站的软件,做人力招聘为什么要自己交端口钱?  建站主机与服务器功能差异如何区分?  如何在阿里云完成域名注册与建站?  高端企业智能建站程序:SEO优化与响应式模板定制开发  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  青岛网站建设如何选择本地服务器?  如何打造高效商业网站?建站目的决定转化率  北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?  ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  Android使用GridView实现日历的简单功能 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。