Android 从图库选择图片,拍照图片,裁剪图片

我直接写代码了

1先来几个常亮

private static final int PHOTO_REQUEST_CAREMA = 1;// 拍照private static final int PHOTO_REQUEST_GALLERY = 2;// 从相册中选择private static final int PHOTO_REQUEST_CUT = 3;// 结果private static final String PHOTO_FILE_NAME = "temp_photo.jpg";

2图片裁剪
private void crop(Uri uri) {    // 裁剪图片意图    Intent intent = new Intent("com.android.camera.action.CROP");    intent.setDataAndType(uri, "image/*");    intent.putExtra("crop", "true");    // 裁剪框的比例,1:1    intent.putExtra("aspectX", 1);    intent.putExtra("aspectY", 1);    // 裁剪后输出图片的尺寸大小    intent.putExtra("outputX", 250);    intent.putExtra("outputY", 250);    intent.putExtra("outputFormat", "JPEG");// 图片格式    intent.putExtra("noFaceDetection", true);// 取消人脸识别    intent.putExtra("return-data", true);    // 开启一个带有返回值的Activity,请求码为PHOTO_REQUEST_CUT    startActivityForResult(intent, PHOTO_REQUEST_CUT);}

3图库选择图片
public void gallery(View view) {    // 激活系统图库,选择一张图片    Intent intent = new Intent(Intent.ACTION_PICK);    intent.setType("image/*");    // 开启一个带有返回值的Activity,请求码为PHOTO_REQUEST_GALLERY    startActivityForResult(intent, PHOTO_REQUEST_GALLERY);}
4相机拍照
public void camera(View view) {    // 激活相机    Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");    // 判断存储卡是否可以用,可用进行存储    if (hasSdcard()) {        tempFile = new File(Environment.getExternalStorageDirectory(), PHOTO_FILE_NAME);        // 从文件中创建uri        Uri uri = Uri.fromFile(tempFile);        intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);    }    // 开启一个带有返回值的Activity,请求码为PHOTO_REQUEST_CAREMA    startActivityForResult(intent, PHOTO_REQUEST_CAREMA);}

5 返回结果
@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {    if (requestCode == PHOTO_REQUEST_GALLERY) {        // 从相册返回的数据        if (data != null) {            // 得到图片的全路径            Uri uri = data.getData();            crop(uri);        }    } else if (requestCode == PHOTO_REQUEST_CAREMA) {        // 从相机返回的数据        if (hasSdcard()) {            crop(Uri.fromFile(tempFile));        } else {            Toast.makeText(MainActivity.this, "未找到存储卡,无法存储照片!", Toast.LENGTH_LONG).show();        }    } else if (requestCode == PHOTO_REQUEST_CUT) {        // 从剪切图片返回的数据        if (data != null) {            Bitmap bitmap = data.getParcelableExtra("data");            this.image.setImageBitmap(bitmap);        }        try {            // 将临时文件删除            tempFile.delete();        } catch (Exception e) {            e.printStackTrace();        }    }    super.onActivityResult(requestCode, resultCode, data);}

6判断sdcard是否被挂载
private boolean hasSdcard() {    if (Environment.getExternalStorageState().equals(            Environment.MEDIA_MOUNTED)) {        return true;    } else {        return false;    }}

7onCreate 就自己实现吧

就这么多了
				
时间: 2024-10-05 04:55:14

Android 从图库选择图片,拍照图片,裁剪图片的相关文章

Android 从 Android 本地图库选择多个图片

原文地址 本文说明如何从 Android 本地图库选择多个图片.作者考虑很多解决方案. 演示从 Android 本地图库选择多个图片,有两个方法可以实现从图库中选择多个图片: 用 Intent 获取多个图片 自定义图库从本地获取和加载图片 下载 Demo 下载 Demo 后将 QDReader 图片目录复制到 sd 卡上 环境 Windows 2008 R2 64 位 Eclipse ADT V22.6.2,Android 4.4.2(API 19) SAMSUNG GT-8618,Androi

Android调用相机实现拍照并裁剪图片,调用手机中的相冊图片并裁剪图片

在 Android应用中,非常多时候我们须要实现上传图片,或者直接调用手机上的拍照功能拍照处理然后直接显示并上传功能,以下将讲述调用相机拍照处理图片然后显示和调用手机相冊中的图片处理然后显示的功能,要想实现上传功能.一般都是上传到数据库中,将imageView中的图片取出来然后存到数据库中就可以. 以下讲述实现的步骤: 1. 调用相冊中的图片裁剪然后显示. 1.1 使用Intent获取从相冊中选择的照片. 1.2 对获取的图片进行裁剪处理.裁剪处理也是使用Intent调用的Android自带的裁

Android拍照、相册 获取图片后,裁剪图片

最近在做的B2B的项目,图片大部分来源于用户自己上传: 由于android尺寸的不一,用户相机,相册的图片也是奇形怪状: 所以在上传之前对图片做一次裁剪是很有必要的! 下面是按比例裁剪图片的demo 资源文件activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/

[转]Android使用WebView从相册/拍照中添加图片

原地址:http://blog.csdn.net/djcken/article/details/46379929 解决这个问题花了很长时间搜索了解,网上大部分使用openFileChooser但都没解决一个存在的问题.就是当弹出选择图片/相机框之后,取消选择,就再也不能点击选择按钮了.这篇文章是为了记录这一点,为验证整个流程部署了后端,但是由于很久没接触后端,后端代码是网上的列子,所以后端代码和部署就不说了.单纯的说下Android端的解决方案. 自定义两个文件: [java] view pla

android 在图库中进行幻灯片播放时图片不会全屏显示

1.在 Slideshowview.java 2.        @Override public void apply(GLCanvas canvas) { int viewWidth = getWidth(); int viewHeight = getHeight(); float initScale = Math.min((float) viewWidth / mWidth, (float) viewHeight / mHeight); // M: if special SUB_TYPE,

Android从图库选择照片

从机里取照片,开头用网上找的代码测试,导致类似下面这样的Crash:java.lang.RuntimeException: Failure delivering result java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/images/media/1909 from pid=29038, u

Android拍照或从图库选择图片并裁剪

今天看<第一行代码>上面关于拍照和从相册选取图片那一部分,发现始终出不来效果,所以搜索其他资料学习一下相关知识,写一个简单的Demo. 一. 拍照选择图片 1.使用隐式Intent启动相机 //构建隐式Intent Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); //调用系统相机 startActivityForResult(intent, 1); 2.处理相机拍照返回的结果 //用户点击了取消 if(data == n

Android 4.4从图库选择图片,获取图片路径并裁剪

转自:http://blog.csdn.net/tempersitu/article/details/20557383 最近在做一个从图库选择图片或拍照,然后裁剪的功能.本来是没问题的,一直在用 [java] view plaincopy Intent intent=new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 的方式来做,是调用系统图库来做,但是发现如

调用 android 系统拍照结合 android-crop 裁剪图片

在一个应用中更换用户的头像,一般有拍照和从图库中选择照片两种方法,现在网上也有很多开源的,但是很多都太复杂.而 Android-crop 这个库比较小,代码不复杂,比较适合,但是它没有拍照这个功能,需要我们自己整合进去. 调用系统相机拍照 返回略缩图的拍照 // 调用系统的拍照 private void dispatchTakePictureIntent() { Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTU