返回

三行代码搞定 Android 照片选择与压缩

Android

在Android开发中,经常需要选择照片的功能。传统的做法是使用Intent来启动系统相册,然后在onActivityResult()方法中获取选择的图片。但是,这种方法存在一些问题:

  • 需要手动处理onActivityResult()方法中的结果。
  • 需要手动压缩图片,以减少图片的大小。
  • 兼容性差,在Android 7.0以上版本中,需要使用FileProvider来获取相片uri。

为了解决这些问题,可以利用PhotoFactory类来进行照片选择和压缩。PhotoFactory类是一个开源的Android库,它可以帮助你轻松地选择照片并将其压缩。使用PhotoFactory类,只需三行代码就可以完成选择照片,获取其bitmap或uri路径(可自行配置是否压缩)的功能。

PhotoFactory类的使用

  1. 添加依赖

在你的build.gradle文件中添加PhotoFactory的依赖:

dependencies {
    implementation 'com.github.bumptech.glide:glide:4.11.0'
    implementation 'com.github.yalantis:ucrop:2.2.6'
    implementation 'com.github.armcha:PhotoFactory:1.0.3'
}
  1. 初始化PhotoFactory

在你的Activity或Fragment中,初始化PhotoFactory类:

PhotoFactory photoFactory = PhotoFactory.with(this);
  1. 选择照片

使用PhotoFactory的pickPhoto()方法来选择照片:

photoFactory.pickPhoto();
  1. 获取选择的图片

在onActivityResult()方法中,获取选择的图片:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    // 获取选择的图片
    Bitmap bitmap = photoFactory.getBitmap();
    Uri uri = photoFactory.getUri();
}

配置PhotoFactory

PhotoFactory类提供了多种配置选项,可以根据需要进行配置。以下是一些常见的配置选项:

  • 是否压缩图片 :可以通过setCompressEnabled()方法来设置是否压缩图片。
  • 压缩质量 :可以通过setCompressQuality()方法来设置压缩质量。
  • 压缩格式 :可以通过setCompressFormat()方法来设置压缩格式。
  • 压缩后的图片大小 :可以通过setCompressSize()方法来设置压缩后的图片大小。

兼容Android 7.0以上版本

在Android 7.0以上版本中,需要使用FileProvider来获取相片uri。PhotoFactory类已经兼容了Android 7.0以上版本,因此不需要手动使用FileProvider。

结语

PhotoFactory类是一个非常好用的Android库,它可以帮助你轻松地选择照片并将其压缩。PhotoFactory类简单易用,兼容性好,是Android开发人员必备的库之一。