- GalleryPick
- CropImageView
- PicCrop https://github.com/hss01248/PicCrop
- 拍照/图片选择--裁剪--压缩 一条龙 https://github.com/hss01248/PhotoOut
- PhotoPicker https://github.com/glassLake/PhotoPicker
- 可能是最接近微信朋友圈的图片压缩算法 https://github.com/Curzibn/Luban
1. GalleryPick
GalleryPick 是 Android 自定义相册,实现了拍照、图片选择(单选/多选)、裁剪、ImageLoader无绑定 任由开发者选择
GitHub地址: https://github.com/YancyYe/GalleryPick
使用法法简单
- [ 1 ] 初始化配置参数
galleryConfig = new GalleryConfig.Builder()
.imageLoader(new PicassoImageLoader()) // ImageLoader 加载框架(必填)
.iHandlerCallBack(iHandlerCallBack) // 监听接口(必填)
.provider("com.example.myapplication.FileProvider") // provider(必填)
.pathList(path) // 记录已选的图片
.multiSelect(false) // 是否多选 默认:false
.multiSelect(false, 5) // 配置是否多选的同时 配置多选数量 默认:false , 9
.maxSize(5) // 配置多选时 的多选数量。 默认:9
.crop(false) // 快捷开启裁剪功能,仅当单选 或直接开启相机时有效
.crop(false, 1, 1, 500, 500) // 配置裁剪功能的参数, 默认裁剪比例 1:1
.isShowCamera(false) // 是否现实相机按钮 默认:false
.filePath("/Gallery/Pictures") // 图片存放路径
.imageLoader(new PicassoImageLoader())
.build();
- [ 2 ] 初始化图片回调接口
iHandlerCallBack = new IHandlerCallBack() {
@Override
public void onSuccess(List<String> photoList) {
path.clear();
for (String s : photoList) {
path.add(s);
}
wrhImageView.setImageBitmap(BitmapFactory.decodeFile(path.get(0)));
}
};
- [ 3 ] 授权管理
// 授权管理
private void initPermissions() {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
Toast.makeText(this, "请在 设置-应用管理 中开启此应用的储存授权。", Toast.LENGTH_SHORT).show();
} else {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, PERMISSIONS_REQUEST_READ_CONTACTS);
}
} else {
GalleryPick.getInstance().setGalleryConfig(galleryConfig).open(this);
}
}
- [ 4 ] 打开相机或图库选择图片
galleryConfig.getBuilder().isOpenCamera(false).build();
2. CropImageView
wrhImageView.setImageBitmap(BitmapFactory.decodeFile(path.get(0)));
Bitmap bitmap = wrhImageView.getCropBitmap(800, 800, true);
iv_headphoto_img2.setImageBitmap(bitmap);