背景:
因需要从相册中选择照片后做其他操作,但是照片有可能较大,则需要进行压缩。但是经过系统相册选择的图片,我们获取到的是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);
}
安卓开发技术分享: https://www.jianshu.com/p/442339952f26

网友评论