选择系统相册或拍照显示图片到ImageView
来源:互联网 发布:Mac玩钢铁雄心4 编辑:程序博客网 时间:2024/06/05 04:48
典型的应用场景就是上传头像~
下面是代码,不赘述,注释详细:
package com.example.lenovo.demo;import android.app.Activity;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import android.os.Environment;import android.view.View;import android.widget.ImageView;import android.widget.Toast;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.text.SimpleDateFormat;import java.util.Date;public class MainActivity extends Activity { private ImageView mImageView; //拍照时的图片存储路径 private static final String iconPath = Environment.getExternalStorageDirectory()+"/Image";//图片的存储目录 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mImageView = (ImageView) findViewById(R.id.mImageView); } /** * 打开系统相册,并选择图片 */ public void selectPic(View view){ Intent intent = new Intent("android.intent.action.PICK"); intent.setType("image/*"); startActivityForResult(intent, 0); } /** * 选择拍照的图片 */ public void takePhoto(View view){ Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); startActivityForResult(intent, 1); } /** * 给拍的照片命名 */ public String createPhotoName(){ //以系统的当前时间给图片命名 Date date = new Date(System.currentTimeMillis()); SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss"); String fileName = format.format(date)+".jpg"; return fileName; } /** * 把拍的照片保存到SD卡 */ public void saveToSDCard(Bitmap bitmap) { //先要判断SD卡是否存在并且挂载 if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { File file = new File(iconPath); if (!file.exists()) { file.mkdirs(); } FileOutputStream outputStream = null; try { outputStream = new FileOutputStream(createPhotoName()); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream);//把图片数据写入文件 } catch (FileNotFoundException e) { e.printStackTrace(); }finally { if(outputStream!=null){ try { outputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } }else { Toast.makeText(this,"SD卡不存在",Toast.LENGTH_SHORT).show(); } } /** * 获取选择的图片 */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if(data==null){ return;//当data为空的时候,不做任何处理 } Bitmap bitmap = null; if(requestCode==0){ //获取从相册界面返回的缩略图 bitmap = data.getParcelableExtra("data"); if(bitmap==null){//如果返回的图片不够大,就不会执行缩略图的代码,因此需要判断是否为null,如果是小图,直接显示原图即可 try { //通过URI得到输入流 InputStream inputStream = getContentResolver().openInputStream(data.getData()); //通过输入流得到bitmap对象 bitmap = BitmapFactory.decodeStream(inputStream); } catch (FileNotFoundException e) { e.printStackTrace(); } } }else if(requestCode==1){ bitmap = (Bitmap) data.getExtras().get("data"); saveToSDCard(bitmap); } //将选择的图片设置到控件上 mImageView.setImageBitmap(bitmap); }}
最后,别忘了,清单文件 权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.CAMERA"/>
0 0
- 选择系统相册或拍照显示图片到ImageView
- Android开发——相册拍照_02.将拍照得到或相册中选择的图片显示在ImageView中
- Android-ImageView显示选择本地图片或拍照
- ImageView---拍照或从相册取图片并裁剪
- 第三讲 ------- 从系统中选择图片(拍照或从相册中取)
- Android 相册选择照片或拍照获取图片系统6.0及7.0实现
- Android调用系统相册和相机选择图片并显示在imageview中
- android-显示选择本地图片或拍照
- android 拍照或选择相册图片压缩上传
- 从相册或拍照选择图片并剪切
- 图片拍照或相册选择的实现以及裁剪功能
- 从相册或拍照选择照片到EditText
- android 拍照+从手机相册选择返回图片到imagview
- 获取相册图片或拍照
- Android从相册选择图片和调用系统摄像头拍照
- Android7.0调用系统相机拍照、相册选择图片、裁剪
- MUI 拍照和从系统相册选择图片上传
- 调用系统相册或拍照时使用中文字体显示
- 北创营一行的一些思考
- CentOS7装mongodb3.2.8
- 实例学习ansible系列(12)常用模块之docker
- Django基础内容总结
- STM32之DAC
- 选择系统相册或拍照显示图片到ImageView
- Java——static修饰符、final修饰符、abstract修饰符、接口
- 动态规划(2):动态规划的三种形式
- Html5中Canvas绘图
- Ajax在跨域情况下async:false失效
- poj2965_refrigerator(BFS+枚举)
- 测试caffe中的net
- 【 同 余 定 理 (补充)】
- 面试经历(不断更新)