安卓读取相册选取图片并压缩

背景:

因需要从相册中选择照片后做其他操作,但是照片有可能较大,则需要进行压缩。但是经过系统相册选择的图片,我们获取到的是URI,而不是实际文件路径。找了很多方法来将URI转为实际路径,最后没有找到完善的方法。其实URI的设计,就不是让大家将其转化为实际路径的,应该直接采用URI完成后续的业务,而不是再转回实际路径。

Demo源代码及apk

https://gitee.com/cxyzy1/compressPictureDemo

选取图片并压缩的主要代码

 /**
     * 图库选择图片
     */
    private void selectPicture() {
        Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        startActivityForResult(intent, REQUEST_CODE_GALLERY);
    }

    /**
     * 接收#startActivityForResult(Intent, int)调用的结果
     */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == RESULT_OK && requestCode == REQUEST_CODE_GALLERY) {
            Uri pictureUri = data.getData();
            try {
                Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(),pictureUri);
                BitmapUtils.compress(bitmap,1024);
                displayPicture(bitmap);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 显示图片
     * @param imageUri 图片的uri
     */
    private void displayPicture(Uri imageUri) {
        picIv.setImageURI(imageUri);
    }
    private void displayPicture(Bitmap bitmap) {
        picIv.setImageBitmap(bitmap);
    }

猜你喜欢

转载自blog.csdn.net/yinxing2008/article/details/83345834