笔记35--调用相机和相册

news/2024/7/5 23:17:32
用到的变量:
private static final String IMAGE_NAME = "head.jpg";
private static final String IMAGE_FILE_LOCATION = "file:///sdcard/" + IMAGE_NAME;//temp file
Uri imageUri = Uri.parse(IMAGE_FILE_LOCATION);//The Uri to store the big bitmap
private Bitmap bitmap;
private File file;
private final int TAKE_BIG_PICTURE = 1;//从相册获取
private final int CROP_BIG_PICTURE = 2;//裁剪
private final int CHOOSE_PICTURE = 3;//拍照

1)拍照

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);//action is capture
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(intent, TAKE_BIG_PICTURE);
2)从相册选

Intent intent = new Intent(Intent.ACTION_PICK, null);
intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
startActivityForResult(intent, CHOOSE_PICTURE);
3)裁剪

private void cropImageUri(Uri uri, int requestCode){
	Intent intent = new Intent("com.android.camera.action.CROP");
	intent.setDataAndType(uri, "image/*");
	intent.putExtra("crop", "true");
	intent.putExtra("aspectX", 1);
	intent.putExtra("aspectY", 1);
	intent.putExtra("outputX", 320);
	intent.putExtra("outputY", 320);
	intent.putExtra("scale", true);
	intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
	intent.putExtra("return-data", false);
	intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
	intent.putExtra("noFaceDetection", true); // no face detection
	startActivityForResult(intent, requestCode);
}
4)onActivityResult()

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
	if(resultCode!=RESULT_OK)
		return;
	switch(requestCode){
	case TAKE_BIG_PICTURE:
		cropImageUri(imageUri, CROP_BIG_PICTURE);
		break;
	case CROP_BIG_PICTURE:
		if(imageUri != null){
			bitmap = decodeUriAsBitmap(imageUri);
			head.setBackground(new BitmapDrawable(ImageToCorner.toRoundCorner(bitmap, 800)));

			try {
				String path = "/mnt/sdcard/pic";
				file=new File(path);//将要保存图片的路径 
				if(!file.exists()){
					file.mkdir();
				}
				file = new File(path + IMAGE_NAME);
				BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file));    
				bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bos); 
				bos.flush();
				bos.close();
			} catch (Exception e1) {
				e1.printStackTrace();
			}
		}
	break;
	case CHOOSE_PICTURE:
		if(data != null){
			imageUri = data.getData();
			cropImageUri(imageUri, CROP_BIG_PICTURE);
		}
	break;
<span style="white-space:pre">	</span>}
}






http://www.niftyadmin.cn/n/3401189.html

相关文章

实战SQL 2008 数据库镜像功能

SQL2008的镜像功能数据库镜像相当于2台服务器提供容错功能&#xff0c;其实原理是进行日志文件的复制及恢复操作保持数据的同步&#xff0c;一般镜像服务2台服务器即可&#xff0c;但出现故障需要手动进行切换&#xff0c;如果增加一台见证服务器就形成了自动切换的功能&#x…

战争剧《战昆仑》热血收官 爱奇艺揽获全网近一半流量

近日&#xff0c;大型战争史诗剧《战昆仑》收官&#xff0c;截止目前&#xff0c;全网播放已达7.5亿&#xff0c;爱奇艺独揽3.3亿&#xff0c;占全网市场份额的44.0%&#xff0c;以超出第二名16.23%的优势领先。爱奇艺持续通过好故事与用户建立情感共鸣&#xff0c;并借助题材的…

Linux CentOS 下安装.net core sdk

注册Microsoft密钥 sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm 安装.NET SDK sudo yum update sudo yum install dotnet-sdk-2.2 其他版本请参照微软官方&#xff0c;这里仅本人记录。 https://dotnet.microsoft.com/download/l…

生成强名称程序集

通过嵌入公钥并使用私钥签名&#xff0c;可以生成强名称&#xff08;strong name&#xff09;的程序集。强名称程序集由4部分进行标识&#xff1a;名称、版本、区域性和公钥。与之相对的&#xff0c;我们可以把没有嵌入公钥和使用私钥签名的程序集称之为弱名称&#xff08;weak…

笔记32--目录values下xml文件:TypeArray、attrs、styles、colors、strings、dimens

1、attrs.xml&#xff1a;定义的是类的属性(声明自定义属性)&#xff0c;这些属性会在类的构造函数中用到。这个还不太明白。贴个大神的链接。 以gallery为例吧&#xff0c;在attrs.xml中(注意此处必须是galleryItemBackground)&#xff1a; <declare-styleable name"…

给自己的软件添加后门

软件彩蛋我想大家都应该听说过。经典的比如在Excel得某个单元隔里面OOXX就可以获得一个赛车游戏之类。这是一种软件彩蛋&#xff0c;纯属娱乐。但是更多的“彩蛋”被用作软件后门。比如我们提供给客户一个软件&#xff0c;通常是看不到某些调试用的窗口和工具的&#xff1b;当我…

asp.net 关闭网页代码

一、linkbutton的单击事件里关闭页面&#xff0c;拼接代码就是了 补充&#xff0c;不可能&#xff0c;我自己试过&#xff0c;再补充一下 1.关闭时提示“是否关闭” Response.Write("<script language:javascript>javascript:window.close();</script>")…