Android相机、相册获取图片
来源:互联网 发布:mac表情 编辑:程序博客网 时间:2024/04/29 22:56
不多说直接上代码
1.拍照后获取图片(系统为了防止应用内存占用过大,对于在应用内通过相机拍摄的图片最终返回来的结果进行了压缩,压缩后的图片变得很小,通过getData的方式只能满足比如显示个头像这样的需求,如果要显示大图,就会出现模糊的情况,所以可以在拍照时,将拍得的照片先保存在本地)
Uri imageUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(),"image.jpg")); //指定照片保存路径(SD卡),image.jpg为一个临时文件,每次拍照后这个图片都会被替换 openCameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);在onActivityResult方法中再将图片取出,并经过缩小处理再显示在界面上或上传给服务器
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { switch (requestCode) { case TAKE_PICTURE: //将保存在本地的图片取出并缩小后显示在界面上 Bitmap bitmap = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"/image.jpg"); Bitmap newBitmap = ImageTools.zoomBitmap(bitmap, bitmap.getWidth() / SCALE, bitmap.getHeight() / SCALE); //由于Bitmap内存占用较大,这里需要回收内存,否则会报out of memory异常 bitmap.recycle(); //将处理过的图片显示在界面上,并保存到本地 iv_image.setImageBitmap(newBitmap); ImageTools.savePhotoToSDCard(newBitmap, Environment.getExternalStorageDirectory().getAbsolutePath(), String.valueOf(System.currentTimeMillis())); break; default: break; } } }
2.打开相册选取图片
Intent openAlbumIntent = new Intent(Intent.ACTION_GET_CONTENT); openAlbumIntent.setType("image/*"); startActivityForResult(openAlbumIntent, CHOOSE_PICTURE);在onActivity方法中处理获取到的图片
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { switch (requestCode) { case CHOOSE_PICTURE: ContentResolver resolver = getContentResolver(); //照片的原始资源地址 Uri originalUri = data.getData(); try { //使用ContentProvider通过URI获取原始图片 Bitmap photo = MediaStore.Images.Media.getBitmap(resolver, originalUri); if (photo != null) { //为防止原始图片过大导致内存溢出,这里先缩小原图显示,然后释放原始Bitmap占用的内存 Bitmap smallBitmap = ImageTools.zoomBitmap(photo, photo.getWidth() / SCALE, photo.getHeight() / SCALE); //释放原始图片占用的内存,防止out of memory异常发生 photo.recycle(); iv_image.setImageBitmap(smallBitmap); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } break; default: break; } } }
0 0
- Android相机、相册获取图片
- Android 从相机或相册获取图片
- android 调用相机和获取相册图片
- 通过相机相册获取图片
- Android从相机或相册获取图片裁剪
- Android从相册和相机获取图片介绍
- Android 如何通过相册和相机来获取图片
- Android 从相机或相册获取图片并裁剪
- Android跳转系统相机或相册获取图片
- android中获取手机相机和相册可以传多张图片
- Android 调用相机或从相册获取图片
- Android 从相机或相册获取图片并剪切
- android中打开相机、打开相册进行图片的获取
- Android调用系统相册或相机获取图片
- Android 7.0 获取相机、相册
- Android相机、相册获取图片,解决相机拍照图片被压缩模糊的情况
- 从相机、相册获取照片或图片
- [IOS]从相册或相机获取图片
- POJ 2559 单调栈模板题
- OpenCV_局部图像特征的提取与匹配_源代码
- 【小熊刷题】Longest Substring Without Repeating Characters
- 连载六-------视图控制器
- css前缀含义
- Android相机、相册获取图片
- OpenCV SURF SIFT特征提取及RANSAC算法
- Codeforces Round #315 (Div. 2)569D Symmetric and Transitive(dp)
- 计算机组成原理之存储器总结---来自北大陆俊林老师的视频内容(1)
- Java UDP通信简单实现
- 黑马程序员——Collection集合、List实现类、泛型
- 图论500题
- Android之横屏竖屏显示问题
- CSS3常用功能的写法