android学习随记-头像拍照及选择图库

/**
 * 调用本地图片库
 */
public static Intent invokeGallery() {
    Intent intent = new Intent(Intent.ACTION_PICK, null);
    intent.setDataAndType(
            MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
            "image/*");
    return intent;

}

/**
 * 调用相机
 */
public static Intent invokeCamera(String imgName) {
    String imagePath = AppCacheUtils.getPathByFolderType(AppCacheUtils.FolderType.images);
    File files = new File(imagePath,imgName);
    filePath=files.getPath();
    userImageUri=Uri.fromFile(files);
    Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
    intent.putExtra(MediaStore.Images.Media.ORIENTATION,1);
    // 下面这句指定调用相机拍照后的照片存储的路径
    intent.putExtra(
            MediaStore.EXTRA_OUTPUT
            , userImageUri);
    return intent;
}
  /**
     * 裁剪图片
     * @param uri
     */
    public static Intent startPhotoZoom(Uri uri,String imgName) {
        if (uri == null) {
            String imagePath = AppCacheUtils.getPathByFolderType(AppCacheUtils.FolderType.images);
            File file = new File(imagePath, imgName);
//            File file = new File(imagePath, "xg_temp_image.jpg");
            uri = Uri.fromFile(file);
        }
        Intent intent = new Intent("com.android.camera.action.CROP");
        intent.setDataAndType(uri, "image/*");
        // 下面这个crop=true是设置在开启的Intent中设置显示的VIEW可裁剪
        intent.putExtra("crop", "true");
        // aspectX aspectY 是宽高的比例
        intent.putExtra("aspectX", 1);
        intent.putExtra("aspectY", 1);
        // outputX outputY 是裁剪图片宽高
        intent.putExtra("outputX", 500);
        intent.putExtra("outputY", 500);
        intent.putExtra("scale", true);
        intent.putExtra("return-data", false); // 开始return-data设置了true的话直接返回bitmap,可能会很占内存
        intent.putExtra("noFaceDetection", true); // no face detection
        File outputImage = new File(AppCacheUtils.getPathByFolderType(AppCacheUtils.FolderType.images), "xg_head_small.jpg");
        try {
            if (outputImage.exists()) {
                outputImage.delete();
            }
            outputImage.createNewFile();
        } catch (Exception e) {
            e.printStackTrace();
        }
        userImageUri=Uri.fromFile(outputImage);
//        userImageUri = Uri.parse("file://"+ AppCacheUtils.getPathByFolderType(AppCacheUtils.FolderType.images) + "/" + "xg_head_small.jpg");
        intent.putExtra("output", userImageUri);//保存路径
        intent.putExtra(MediaStore.EXTRA_OUTPUT, userImageUri);
        intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
        return intent;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值