Android实现拍照截取和相册图片截取_Android

关于拍照截取和相册截取,看了网上很多资料,自己整理了一份比较详细的,供有需要的人参考

1  拍照

原理就是通过intent调用系统的相机,拍完照在回调进行操作,成功获取到拍完照的图片根据uri调用系统的裁剪页面,裁剪完也是在回调中进行处理,显示在页面的imageview中。

2  相册选取图片

原理也是通过intent打开系统的图片,用户选择完成以后在回调中根据图片的uri调用系统的裁剪页面,同上。

首先,定义几个常量

public static final int TAKE_PHOTO = 1;
public static final int CROP_PHOTO = 2;
public static final int ACTION_CHOOSE=3;
private Uri imageUri; //图片路径
private String filename; //图片名称

然后在拍照和相册选择的按钮中处理事件

@Override
  public void onClick(View v) {
    switch (v.getId()) {
      case R.id.bt1:  //拍照截取
        SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
        Date date = new Date(System.currentTimeMillis());
        filename = format.format(date);
        File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
        File outputImage = new File(path, filename +".jpg");
        try {
          if (outputImage.exists()) {
            outputImage.delete();
          }
          outputImage.createNewFile();
        } catch (IOException e) {
          e.printStackTrace();
        }
        //将File对象转换为Uri并启动照相程序
        imageUri = Uri.fromFile(outputImage);
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); //照相
        intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); //指定图片输出地址
        startActivityForResult(intent, TAKE_PHOTO); //启动照相
        break;
      case R.id.bt2:  //相册选取
        Intent intent2 = new Intent(Intent.ACTION_PICK);
        intent2.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,"image/*");
        startActivityForResult(intent2,ACTION_CHOOSE);
        break;
    }
  } 

最主要的在回调中的执行

// 使用startActivityForResult返回结果时调用的方法
  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(resultCode!=RESULT_OK){
      Toast.makeText(this, "取消了", Toast.LENGTH_SHORT).show();
      return;
    }
    switch (requestCode) {
      case TAKE_PHOTO:  //拍照的回调
        cropImage();
        break;
      case ACTION_CHOOSE:  //选择照片的回调
        imageUri = data.getData();
        cropImage();
        break;
      case CROP_PHOTO:  //裁剪完照片的回调
        showPic();
        break;
      default:
        break;
    }
  } 

裁剪图片的方法

/**
 * 裁剪图片
 **/
private void cropImage() {
  Intent intent = new Intent("com.android.camera.action.CROP"); //剪裁
  intent.setDataAndType(imageUri, "image/*");
  intent.putExtra("scale", true);
  //设置宽高比例
  intent.putExtra("aspectX", 1);
  intent.putExtra("aspectY", 1);
  //设置裁剪图片宽高
  intent.putExtra("outputX", 340);
  intent.putExtra("outputY", 340);
  intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
  Toast.makeText(MainActivity.this, "剪裁图片", Toast.LENGTH_SHORT).show();
  //广播刷新相册
  Intent intentBc = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
  intentBc.setData(imageUri);
  this.sendBroadcast(intentBc);
  startActivityForResult(intent, CROP_PHOTO); //设置裁剪参数显示图片至ImageView
}

过程比较简单,可能会有一些判断的地方没有处理,如果有不对的地方希望有高手可以帮忙改进,谢谢~~

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索Android裁剪图片
Android拍照截取
android 拍照图片截取、android拍照截取、android 拍照和相册、android 拍照相册裁剪、android 拍照 相册,以便于您获取更多的相关知识。

时间: 2024-08-30 16:13:11

Android实现拍照截取和相册图片截取_Android的相关文章

Android实现拍照截取和相册图片截取

关于拍照截取和相册截取,看了网上很多资料,自己整理了一份比较详细的,供有需要的人参考 1  拍照 原理就是通过intent调用系统的相机,拍完照在回调进行操作,成功获取到拍完照的图片根据uri调用系统的裁剪页面,裁剪完也是在回调中进行处理,显示在页面的imageview中. 2  相册选取图片 原理也是通过intent打开系统的图片,用户选择完成以后在回调中根据图片的uri调用系统的裁剪页面,同上. 首先,定义几个常量 public static final int TAKE_PHOTO = 1

Android实现拍照、选择相册图片并裁剪功能_Android

通过拍照或相册中获取图片,并进行裁剪操作,然后把图片显示到ImageView上.  当然也可以上传到服务器(项目中绝大部分情况是上传到服务器),参考网上资料及结合项目实际情况,  测试了多款手机暂时没有发现严重问题.代码有注释,直接贴代码: public class UploadPicActivity extends Activity implements View.OnClickListener { private Button take_photo_btn; private Button s

Android实现拍照、选择相册图片并裁剪功能

通过拍照或相册中获取图片,并进行裁剪操作,然后把图片显示到ImageView上.  当然也可以上传到服务器(项目中绝大部分情况是上传到服务器),参考网上资料及结合项目实际情况,  测试了多款手机暂时没有发现严重问题.代码有注释,直接贴代码: public class UploadPicActivity extends Activity implements View.OnClickListener { private Button take_photo_btn; private Button s

Android拍照和获取相册图片_Android

之前遇到各种拍照啊,获取相册图片之类,都是直接去度娘,要么之前的代码复制下,没好好总结过.  再也不要问度娘了,再也不用一堆博客里找啊找了...  ----------------------------------------------我是正文的分割线-----------------------------------------------------------  一个一个来,先说调用手机相机拍照(最简单版): cameraButton.setOnClickListener(new V

Android拍照和获取相册图片

之前遇到各种拍照啊,获取相册图片之类,都是直接去度娘,要么之前的代码复制下,没好好总结过. 再也不要问度娘了,再也不用一堆博客里找啊找了... ----------------------------------------------我是正文的分割线----------------------------------------------------------- 一个一个来,先说调用手机相机拍照(最简单版): cameraButton.setOnClickListener(new View

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

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

Android手势滑动实现ImageView缩放图片大小_Android

本文推出了两种Android手势实现ImageView缩放图片大小的方法,分享给大家供大家参考,具体内容如下 方法一:将以下代码写到MulitPointTouchListener.java中,然后对你相应的图片进行OnTouchListener. 例如:imageView.setOnTouchListener(new MulitPointTouchListener ()); 在xml中要将ImageView的缩放格式改成Matrix 例如:android:scaleType="matrix&qu

android处理拍照与选择相册并可动态设置是否可裁剪上传解决方案 并且真机测试通过(小米\魔族\htc)sdk2.1-4.x系统

[java] view plaincopy package org.wavefar.lib.utils;      import java.io.ByteArrayOutputStream;   import java.io.File;   import java.io.FileNotFoundException;   import java.io.FileOutputStream;   import java.io.IOException;      import org.wavefar.li

Android手机拍照或选取图库图片作为头像

package zhangpgil.photo; import java.io.File; import android.support.v7.app.ActionBarActivity; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.Toast; import android.content.Intent; import