- 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 自定義相冊碴裙,實現(xiàn)了拍照、圖片選擇(單選/多選)捡絮、裁剪乒躺、ImageLoader無綁定 任由開發(fā)者選擇
GitHub地址: https://github.com/YancyYe/GalleryPick
使用法法簡單
- [ 1 ] 初始化配置參數(shù)
galleryConfig = new GalleryConfig.Builder()
.imageLoader(new PicassoImageLoader()) // ImageLoader 加載框架(必填)
.iHandlerCallBack(iHandlerCallBack) // 監(jiān)聽接口(必填)
.provider("com.example.myapplication.FileProvider") // provider(必填)
.pathList(path) // 記錄已選的圖片
.multiSelect(false) // 是否多選 默認(rèn):false
.multiSelect(false, 5) // 配置是否多選的同時 配置多選數(shù)量 默認(rèn):false 勺三, 9
.maxSize(5) // 配置多選時 的多選數(shù)量。 默認(rèn):9
.crop(false) // 快捷開啟裁剪功能,僅當(dāng)單選 或直接開啟相機(jī)時有效
.crop(false, 1, 1, 500, 500) // 配置裁剪功能的參數(shù)悲没, 默認(rèn)裁剪比例 1:1
.isShowCamera(false) // 是否現(xiàn)實相機(jī)按鈕 默認(rèn):false
.filePath("/Gallery/Pictures") // 圖片存放路徑
.imageLoader(new PicassoImageLoader())
.build();
- [ 2 ] 初始化圖片回調(diào)接口
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 ] 授權(quán)管理
// 授權(quán)管理
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, "請在 設(shè)置-應(yīng)用管理 中開啟此應(yīng)用的儲存授權(quán)。", 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 ] 打開相機(jī)或圖庫選擇圖片
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);