Android调用系统裁剪图片模糊问题

来源:互联网 发布:淘宝女内衣表模板 编辑:程序博客网 时间:2024/05/17 03:08

最近项目在选取图片是出现了裁剪后模糊的问题

xta Options Table for image/* crop:

附加选项数据类型描述cropString发送裁剪信号aspectXintX方向上的比例aspectYintY方向上的比例outputXint裁剪区的宽outputYint裁剪区的高scaleboolean是否保留比例return-databoolean是否将数据保留在Bitmap中返回dataParcelable相应的Bitmap数据circleCropString圆形裁剪区域?MediaStore.EXTRA_OUTPUT ("output")URI将URI指向相应的file:///...,详见代码示例

// 开始return-data设置了true的话直接返回bitmap,可能会很占内存intent.putExtra("return-data", true);

这样返回的bitmap是还存在内存中的缩略图,所以很模糊,后来改为把剪切的图片保存起来不直接返回bitmap一切就OK了

private Uri imageUri;private static final String IMAGE_FILE_LOCATION = Constants.ALBUM_PATH+"/temp.jpg";imageUri = Uri.fromFile(new File(IMAGE_FILE_LOCATION));

/*        * 剪切图片        */    private void crop(Uri uri) {        // 裁剪图片意图        Intent intent = new Intent("com.android.camera.action.CROP");        intent.setDataAndType(uri, "image/*");        intent.putExtra("crop", "true");        // 裁剪框的比例,1.5:1        intent.putExtra("aspectX", 16);        intent.putExtra("aspectY", 9);        // 裁剪后输出图片的尺寸大小        intent.putExtra("outputX", 800);        intent.putExtra("outputY", 450);        // intent.putExtra("outputFormat", "JPEG");// 图片格式        //intent.putExtra("noFaceDetection", true);// 取消人脸识别        intent.putExtra("return-data", false);        intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);        intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());        startActivityForResult(intent, SELECT_PIC_BY_CUT_PHOTO);    }
@Override    public void onActivityResult(int requestCode, int resultCode, Intent data) {        switch (requestCode) {            case SELECT_PIC_BY_CUT_PHOTO://                从剪切图片返回的数据                if (resultCode == Activity.RESULT_OK) {                    if (data != null) {                        if (imageUri != null) {                            Bitmap bitmap = ImageUtils.decodeUriAsBitmap(getActivity(), imageUri);                            // 把解析到的位图显示出来                            advanceDialog.setPic(bitmap);                            advanceDialog.dismissPicDialog();                            String imageurl = Constants.ALBUM_PATH;                            saveMyBitmap(imageurl, bitmap);                        }                                           }                                    }                break;        }        super.onActivityResult(requestCode, resultCode, data);    }

private Bitmap decodeUriAsBitmap(Uri uri) {        Bitmap bitmap = null;        try {            // 先通过getContentResolver方法获得一个ContentResolver实例,            // 调用openInputStream(Uri)方法获得uri关联的数据流stream            // 把上一步获得的数据流解析成为bitmap            bitmap = BitmapFactory.decodeStream(getActivity().getContentResolver().openInputStream(uri));        } catch (FileNotFoundException e) {            e.printStackTrace();            return null;        }        return bitmap;    }



0 0
原创粉丝点击