import java.io.File;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.View;
import android.widget.ImageView;
public class MainActivity extends Activity {
private ImageView img;
private String path=Environment.getExternalStorageDirectory()+"/1512Q.png";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
img = (ImageView) findViewById(R.id.img);
}
//调取系统的相机进行拍照
public void getdata1(View view) {
//打开相机 MediaStore.ACTION_IMAGE_CAPTURE 打开相机的Action
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
//1.意图 2.requestCode 请求码
startActivityForResult(intent, 1);
}
//拍照并裁剪
public void getdata2(View view) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
//在Sdcard 中创建文件 存入图片
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(path)));
startActivityForResult(intent, 3);
}
//调取相册进行裁剪
public void getdata3(View view) {
//调取系统的相册 Intent.ACTION_PICK相册
Intent intent = new Intent(Intent.ACTION_PICK);
//设置格式
intent.setType("image/*");
startActivityForResult(intent, 7);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//调取系统的相机进行拍照
geta(requestCode, resultCode, data);
//拍照并裁剪
getb(requestCode, resultCode, data);
//调取相册进行裁剪
getc(requestCode, resultCode, data);
super.onActivityResult(requestCode, resultCode, data);
}
private void geta(int requestCode, int resultCode, Intent data) {
if (requestCode==1 && resultCode==RESULT_OK) {
//取出图片
Bitmap bm=data.getParcelableExtra("data");
//设置图片
img.setImageBitmap(bm);
}
}
private void getb(int requestCode, int resultCode, Intent data) {
//当拍完照以后点击完成 会执行 onActivityResult 方法 调取裁剪功能
if (requestCode==3 && resultCode==RESULT_OK) {
//调取裁剪功能 om.android.camera.action.CROP 裁剪的Action
Intent intent = new Intent("com.android.camera.action.CROP");
//得到图片设置类型
intent.setDataAndType(Uri.fromFile(new File(path)), "image/*");
//是否支持裁剪 设置 true 支持 false 不支持
intent.putExtra("CROP", true);
//设置比例大小 1:1
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
//输出的大小
intent.putExtra("outputX", 250);
intent.putExtra("outputY", 250);
//将裁剪好的图片进行返回到Intent中
intent.putExtra("return-data", true);
startActivityForResult(intent, 5);
}
//点击完裁剪的完成以后会执行的方法
if (requestCode==5 && resultCode==RESULT_OK) {
Bitmap bm=data.getParcelableExtra("data");
img.setImageBitmap(bm);
}
}
/*private void getc(int requestCode, int resultCode, Intent data) {
if (requestCode==7 && resultCode==RESULT_OK) {
Uri uri=data.getData();
img.setImageURI(uri);
}
}*/
private void getc(int requestCode, int resultCode, Intent data) {
//得到相册里的图片进行裁剪
if (requestCode==7 && resultCode==RESULT_OK) {
//得到相册图片
Uri uri=data.getData();
//裁剪
Intent intent = new Intent("com.android.camera.action.CROP");
//设置图片 以及格式
intent.setDataAndType(uri, "image/*");
//是否支持裁剪
intent.putExtra("crop", true);
//设置比例
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
//设置输出的大小
intent.putExtra("outputX", 250);
intent.putExtra("outputY", 250);
//是否支持人脸识别
// intent.putExtra("onFaceDetection", true);
//返回
intent.putExtra("return-data", true);
startActivityForResult(intent, 9);
}
//2.点击裁剪完成
if (requestCode==9 && resultCode==RESULT_OK) {
Bitmap bm=data.getParcelableExtra("data");
img.setImageBitmap(bm);
}
}
}
相机、剪裁、相册的简单调用
最新推荐文章于 2024-09-04 07:07:51 发布