Android相机和本地图片的调用

转载请注明本文出自wls的博客(http://write.blog.csdn.net/postedit),请尊重他人的辛勤劳动成果,谢谢!

Android开发过程中,相机的调用和本地图片的选择是非常正常的功能,几乎所有的App都会用到,今天就前几天遇到的相机的的调用和本地图片选择的一个简单总结,希望有所帮助!

1、调用相机的核心代码:

Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(camera,0x11);

2、获取拍照所得图片后对图片的处理:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);

if(requestCode == 0x11&&resultCode == Activity.RESULT_OK&&data != null){
//获得外部存储器状态
String sdcard = Environment.getExternalStorageState();
//判断当前外部存储器是否可读可写
if(!sdcard.equals(Environment.MEDIA_MOUNTED)){
Log.d(TAG, "onActivityResult: "+"当前外存储器不可读可写");
return;
}
new DateFormat();
String name = DateFormat.format("yyyyMMdd_hhmmss", Calendar.getInstance(Locale.CHINA))+".jpg";
Bundle bundle = data.getExtras();
//获取相机返回的数据并转化为图片格式
bitmap = (Bitmap) bundle.get("data");
FileOutputStream fos = null;
File file = new File("/sdcard/Image/");
//创建此抽象路径名指定的父路径包括所有必须但不存在的目录
file.mkdirs();
String filaname = file.getPath()+name;
try {
fos = new FileOutputStream(filaname);
//压缩图片,第二个参数为100说明压缩率为0
bitmap.compress(Bitmap.CompressFormat.JPEG,100,fos);
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally {
try {
fos.flush();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
//设置图片
mImageView.setImageBitmap(bitmap);
}
}
}

3、本地图片的调用:

Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent,0x11);

4、本地图片的获取及处理:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 0x11&&resultCode == Activity.RESULT_OK&&data != null){
Uri selectImage = data.getData();
String []filePathColumns = {MediaStore.Images.Media.DATA};
Cursor c = this.getContentResolver().query(selectImage, filePathColumns, null,null, null);
c.moveToFirst();
int columnIndex = c.getColumnIndex(filePathColumns[0]);
String picturePath= c.getString(columnIndex);
c.close();
mImageView.setImageURI(selectImage);
}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值