package com.tejia.lijin.app.util.picture;
|
|
import android.app.Activity;
|
import android.content.Intent;
|
import android.graphics.Bitmap;
|
import android.net.Uri;
|
import android.os.Build;
|
import android.os.Environment;
|
import android.provider.MediaStore;
|
|
import java.io.File;
|
|
public class PictureUtil {
|
|
/**
|
* 获取相册图片
|
*
|
* @param uri
|
*/
|
public static void getAndClipPhoto(Activity context, Uri uri, int width, int height, Uri uriClipUri, int requestCode) {
|
File storageDir = new File(Environment.getExternalStorageDirectory().getPath() + "/FLQImg/");
|
if (!storageDir.exists()) {//没有文件夹则创建
|
storageDir.mkdir();
|
}
|
//com.android.camera.action.CROP,这个action是调用系统自带的图片裁切功能
|
Intent intent = new Intent("com.android.camera.action.CROP");
|
intent.setDataAndType(uri, "image/*");//裁剪的图片uri和图片类型
|
intent.putExtra("crop", "true");//设置允许裁剪,如果不设置,就会跳过裁剪的过程,还可以设置putExtra("crop", "circle")
|
if (Build.MANUFACTURER.equals("HUAWEI")) { //华为特殊处理 不然会显示圆
|
intent.putExtra("aspectX", 9998);
|
intent.putExtra("aspectY", 9999);
|
} else {
|
intent.putExtra("aspectX", 1);//裁剪框的 X 方向的比例,需要为整数
|
intent.putExtra("aspectY", 1);//裁剪框的 Y 方向的比例,需要为整数
|
}
|
intent.putExtra("outputX", width);//返回数据的时候的X像素大小。
|
intent.putExtra("outputY", height);//返回数据的时候的Y像素大小。
|
//裁剪时是否保留图片的比例,这里的比例是1:1
|
intent.putExtra("scale", true);
|
//是否是圆形裁剪区域,设置了也不一定有效
|
intent.putExtra("circleCrop", false);
|
|
//Android 对Intent中所包含数据的大小是有限制的,一般不能超过 1M,否则会使用缩略图 ,所以我们要指定输出裁剪的图片路径
|
intent.putExtra(MediaStore.EXTRA_OUTPUT, uriClipUri);
|
intent.putExtra("return-data", false);//是否将数据保留在Bitmap中返回
|
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());//输出格式,一般设为Bitmap格式及图片类型
|
intent.putExtra("noFaceDetection", false);//人脸识别功能
|
context.startActivityForResult(intent, requestCode);//裁剪完成的标识
|
}
|
|
}
|