文档章节

调用系统的拍照和剪切图片功能

蜗牛崛起
 蜗牛崛起
发布于 2017/09/07 11:12
字数 297
阅读 10
收藏 1

具体代码如下

private File tempFile ;
private static final int PHOTO_REQUEST_TAKEPHOTO = 1;// 拍照
private static final int PHOTO_REQUEST_CUT = 2;// 结果

tempFile = new File(Environment.getExternalStorageDirectory(),
				getPhotoFileName());

// 使用系统当前日期加以调整作为照片的名称
	private String getPhotoFileName() {
		Date date = new Date(System.currentTimeMillis());
		SimpleDateFormat dateFormat = new SimpleDateFormat(
				"'IMG'_yyyyMMdd_HHmmss");
		return dateFormat.format(date) + ".jpg";
	}

/**
* 调用系统拍照
**/
 private String takePhoto() {
		Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
		// 指定调用相机拍照后照片的储存路径
		intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(tempFile));
		startActivityForResult(intent,PHOTO_REQUEST_TAKEPHOTO);
	}

       /**
	 * 进入剪切图片界面
	 */
	private void startPhotoZoom(Uri uri) {
		Intent intent = new Intent("com.android.camera.action.CROP");
		intent.setDataAndType(uri, "image/*");
		// crop为true是设置在开启的intent中设置显示的view可以剪裁
		intent.putExtra("crop", "true");

		// aspectX aspectY 是宽高的比例
		intent.putExtra("aspectX", 1);
		intent.putExtra("aspectY", 1);

		// outputX,outputY 是剪裁图片的宽高  不能太大,用Intent传bitmap不能大于40KB,否则报error  FAILED BINDER TRANSACTION
		intent.putExtra("outputX", 400);
		intent.putExtra("outputY", 300);
		intent.putExtra("return-data", true);
		intent.putExtra("noFaceDetection", true);
		startActivityForResult(intent, PHOTO_REQUEST_CUT);
	}

[@Override](https://my.oschina.net/u/1162528)
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);

		switch (requestCode) {
		case PHOTO_REQUEST_TAKEPHOTO:// 当选择拍照时调用
			startPhotoZoom(Uri.fromFile(tempFile)); //进入系统剪切图片界面
			break;
		case PHOTO_REQUEST_CUT:// 返回的结果
			if (data != null){
				Bundle bundle = data.getExtras();  
				Bitmap bitmap = (Bitmap) bundle.get("data");
				HeadPicEntity entity = list.get(curPos);
				entity.setBitmap(bitmap);
				adapter.notifyDataSetChanged();
			}
			break;
		}
		super.onActivityResult(requestCode, resultCode, data);

	}

© 著作权归作者所有

蜗牛崛起
粉丝 3
博文 127
码字总数 63547
作品 0
东城
程序员
私信 提问
Android拍照,剪切,并放入SD卡

android拍照之后,先对图片进行一次剪切,最后将图片保存到指定的目录。在项目需要用户拍照,并对图片进行剪切后,发送到服务器端做验证。这里贴出来一个小例子,能够实现基本的功能。文章最...

苏谷子
2014/11/21
253
0
Android Intent 用法全面总结

[代码] 调用拨号程序 [代码] 发送短信或彩信 [代码] 通过浏览器打开网页 [代码] 发送电子邮件 [代码] 显示地图与路径规划 [代码] 播放多媒体 [代码] 拍照 [代码] 获取并剪切图片 [代码] 打开...

青年ziran
2012/11/08
329
0
使用 android 的摄像头拍照

android提供了操作摄像头的API,可以通过两种做法来使用: 通过Intent直接调用系统提供的照相机功能,复用它的拍照Activity,这是最简单和最方便的办法,因为你不需要考虑手机的兼容性问题,...

华宰
2011/09/07
5K
0
Android 仿微信, QQ 裁剪

Android 仿微信, QQ 裁剪 前言 在平时开发中,经常需要实现这样的功能,拍照 - 裁剪,相册 - 裁剪。当然,系统也有裁剪的功能,但是由于机型,系统兼容性等问题,在实际开发当中,我们通常会...

xujun9411
05/10
0
0
Android 调用系统拍照 笔记

由于临时需要做个简单的Android程序,其中涉及调用系统拍照并保存照片。之前没有任何Java和Android经验,coding中遇到不少问题,特记录以供参考。 Google一下能找到不少现成的调用系统拍照的...

会说话的哑巴
2012/09/07
3.3K
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Boot + Mybatis-Plus 集成与使用(二)

前言: 本章节介绍MyBatis-Puls的CRUD使用。在开始之前,先简单讲解下上章节关于Spring Boot是如何自动配置MyBatis-Plus。 一、自动配置 当Spring Boot应用从主方法main()启动后,首先加载S...

伴学编程
昨天
7
0
用最通俗的方法讲spring [一] ──── AOP

@[TOC](用最通俗的方法讲spring [一] ──── AOP) 写这个系列的目的(可以跳过不看) 自己写这个系列的目的,是因为自己是个比较笨的人,我曾一度怀疑自己的智商不适合干编程这个行业.因为在我...

小贼贼子
昨天
7
0
Flutter系列之在 macOS 上安装和配置 Flutter 开发环境

本文为Flutter开发环境在macOS下安装全过程: 一、系统配置要求 想要安装并运行 Flutter,你的开发环境需要最低满足以下要求: 操作系统:macOS(64位) 磁盘空间:700 MB(不包含 IDE 或其余...

過愙
昨天
6
0
OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
昨天
2.7K
16
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
昨天
42
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部