EasyPhotos
兼容android 10,自定义相机拍照。android图片选择、裁剪、压缩,自定义相机仿微信拍照,相册选择(单选/多选),文件夹图片选择(单选/多选),各界面根据状态栏颜色智能适配状态栏字体颜色变色为深色或浅色,根据使用场景智能适配沉浸式状态栏,内部处理运行时权限,支持Glide/Picasso/Fresco/Imageloader等所有图片加载框架库的带默认勾选选中图片的能填充自定义广告的自定义Ui相机相册图片浏览选择器;更有拼图/文字贴纸/贴图/图片缩放/Bitmap图片添加水印/媒体文件更新到媒体库等众多Bitmap图片编辑功能的android Bitmap图片处理工具框架库。
Install / Use
/learn @joker-fu/EasyPhotosREADME
EasyPhotos
原EasyPhotos地址
适配完成Android10之后,将主要维护master分支(AndroidX),support分支仅修复bug。
签名信息遗忘,APK暂未更新,请直接跑 demo
| 无选中状态(默认UI色调) | 选中状态( 自定义UI色调) | 其他功能(各功能可自选) |
|:-----------:|:--------:|:---------:|
|
|
|
|
| 专辑列表(默认UI色调) | 相册带广告( 自定义UI色调) | 专辑列表带广告 |
|:-------:|:---------:|:---------:|
|
|
|
|
| 预览页 | 预览页单击图片转全屏模式 | 预览页缩放图片 |
|:-------:|:---------:|:---------:|
|
|
|
|
|预览页单击缩放图片显示操作栏 | 拼图选择页| 拼图选择页 |
|:-------:|:---------:|:---------:|
|
|
|
|
|拼图页 | 拼图页拼图功能| 拼图页文字贴纸功能 |
|:-------:|:---------:|:---------:|
|
|
|
|
|文字贴纸编辑页 | 示例功能列表 | 示例功能列表 |
|:-------:|:---------:|:---------:|
|
|
|
|
|覆盖层 | | |
|
| | |
产品特色
- 支持单选/多选场景,支持设置单选直接返回,支持单图裁剪
- 支持绑定Glide、Picasso、Imageloader等所有图片加载库(fresco暂不支持),EasyPhotos并没有对他们进行依赖,不必担心冲突和体积问题。
- 状态栏字体颜色智能适配,当状态栏颜色趋近于白色时,字体颜色智能处理为深色
- 内部处理运行时权限,使用者无需考虑权限问题
- 拼一张功能(可配置开关,可独立作为拼图使用)
- 原图功能(可配置开关)
- 广告填充(可配置开关)
- 过滤图片(图片宽度、图片高度、文件大小三个维度任意选择和搭配)
- 默认勾选图片(可配置)
- 图片预览(可全屏,可缩放,支持长图)
- 支持动图gif显示,并支持仅选择动图gif
- 支持视频video显示,并支持仅选择Video
- UI色值高度浓缩,自定义超简单
- 对Gif动图的处理(可配置开关是否显示,列表中以静态图+动图标识显示,预览大图时自动播放)
- 自带Bitmap相关方法(如添加水印、把View画成Bitmap、保存Bitmap等)
- 自带媒体库相关方法(如媒体文件更新到媒体库)
- 支持仿微信拍照和视频录制,并支持添加覆盖蒙层(指示层),适用于拍证件等
- 外部可调用EasyPhotos进行图片预览
- 支持外部扩展视频播放(由外部实现视频播放逻辑)
- 支持外部扩展图片/视频压缩操作(由外部实现压缩逻辑)
- 支持Support和AndroidX
- 兼容API19 ~ API32
获取EasyPhotos(通过Gradle方式)
- 在项目的 build.gradle(project) 文件里面添加:
allprojects {
repositories {
maven { url "https://jitpack.io" }
}
}
- 你需要用到EasyPhotos的module中的
build.gradle(module)文件里面添加:
dependencies {
// support
// implementation 'com.joker.HuanTanSheng:EasyPhotos:2.5.1'
// androidX:
implementation 'io.github.joker-fu:EasyPhotos:andX-2.5.7'
}
关于混淆
EasyPhotos的混淆:
-keep class com.huantansheng.easyphotos.models.** { *; }
EasyPhotos文档总录
- 01-关于权限
- 02-相机与相册
- 03-拼图(单独使用)
- 04-图片添加水印
- 05-把View画成Bitmap
- 06-保存Bitmap到指定文件夹
- 07-Bitmap回收
- 08-更新媒体文件到媒体库
- 09-屏幕方向设置
- 10-自定义UI样式
- 11-多语言
- 12-配置ImageEngine,支持所有图片加载库
- 13-配置CompressEngine,根据使用者需求可实现图片、视频压缩
QQ交流群:288600953 )
编者语
EasyPhotos将在高颜值、高兼容、高性能、强功能的道路上持续更新,欢迎各种Issues,我将及时反馈,谢谢!
QQ交流群:288600953
更新日志
2.5.7:
- 仓库迁移至 mavenCentral
- 移除自己维护UCrop
- 升级 target sdk
- 预览支持播放 Video
- 修复自定义相机覆盖层偶现丢失bug
- 修复拼图点击添加文字崩溃问题
- 优化相册数据加载
- 其它优化
2.5.6:
- 升级subsampling-scale-image-view源码,修改源码增加resetScaleAndTop方法
- 优化长图预览
2.5.5:
- 预览图片 支持设置从第几张开始
2.5.4:
- strings.xml 修改 no_photos_easy_photos
- strings.xml 增加 ucrop_activity_title 用于裁剪页标题
2.5.3:
- 修复attr问题
2.5.2:
- 补发UCrop兼容包,它兼容Android10,其他与原库无异,等原库兼容将替换为原库
- 调整交互
2.5.1:
- 调整UCrop为无JNI版本(之前用了JNI版本)
- 调整UCrop裁剪兼容Android10方案
- 调整UI
- 因漏发UCrop兼容包,已删除
2.5.0:
- 兼容Android10,且Photo.path低于10返回绝对路径,高于10返回uri.toString(拼图/水印/裁剪/自定义相机拍照,由于UCrop还未兼容10,所以暂时改为源码依赖)
- 调整默认Setting相机参数(默认使用系统相机)
- 因兼容Android10,调整部分方法参数(saveBitmapToDir去掉dirPath, namePrefix参数,默认存储在DCIM;startPuzzleWithPhotos/startPuzzleWithPaths去掉puzzleSaveDirPath, puzzleSaveNamePrefix参数 )
- 因漏发UCrop兼容包,已删除
2.4.8_beta9:
- 调整自定义属性名称
2.4.8_beta8:
- 修复初次获取权限时FileProvider问题
2.4.8_beta7:
- 修复视频预览回调bug
2.4.8_beta6:
- 优化覆盖层
- 增加覆盖层demo
- 优化代码
2.4.8_beta5:
- 优化
- 增加enableSingleCheckedBack(bool),支持单选场景选中直接返回
2.4.8_beta4:
- 修复拼图bug
2.4.8_beta3:
- 支持系统相机和仿微信相机切换 enableSystemCamera(bool)
- 优化文件存储
2.4.8_beta2:
- 优化长图预览双击
- 优化加载进度显示
2.4.8_beta1:
- 修改预览问题
- 修改callback返回路径集合
- 优化部分代码
2.4.8:
- 优化相机参数/调整录制比特率
- 整理项目包结构
2.4.7:
- 发布2.4.7正式版
- 支持AndroidX
- 2.4.8开始调整版本顺序为 x.x.x->x.x.x_betax
2.4.7_beta3:
- bugfix
2.4.7_beta2:
- 优化代码
- 增加压缩引擎CompressEngine接口(具体由外部实现压缩逻辑)
- 增加压缩相关API(isCompress(bool)、setCompressEngine(CompressEngine))
2.4.7_beta1:
- 提供EasyPhotos预览供外部使用
- 互斥选择支持分开计数(感谢hubin920218)
- 优化部分代码和Strings.xml
2.4.6:
- 优化图片预览
2.4.6_beta9:
- 更换图片预览实现,支持长图预览
2.4.6_beta8:
- 支持文件最大Size限制 setMaxFileSize
- 支持互斥选择(不能同时选择图片或视频) setSelectMutualExclusion
新增互斥选择文案:
<string name="selector_mutual_exclusion_easy_photos">不能同时选择图片或视频</string>
2.4.6_beta7:
- 优化根据路径默认选中代码
- 优化代码中一些命名
2.4.6_beta6:
- 修复setSelectedPhotoPaths不能默认选中问题
注意:
//推荐使用 setSelectedPhotos 方式
2.4.6_beta5:
- 新增动图gif单独显示,注意先showGif()
2.4.6_beta4:
- 新增相机提示文字控制 enableCameraTips
- 新增相机界面配色
- 优化相机录像提示文字逻辑
新增相机界面配色
<color name="easy_photos_camera_fg_primary">#ffffff</color>//ffffff 相机前景主色,如字体颜色、icon颜色
<color name="easy_photos_camera_fg_accent">#00AA00</color>//578fff 相机前景突出色,如录制进度颜色,对焦框颜色 0xEE16AE16
2.4.6_beta3:
- 新增:setHideBottomControls 控制UCrop底部控制栏是否显示
- 优化:移除setFileProviderAuthority方法(注意:如已添加其他sdk或项目中已使用过provider节点, 请参考博客的解决方案)
2.4.6_beta2:
- 优化:优化选中和默认选中等逻辑
- 优化:Photo支持裁剪路径和原图路径
2.4.6_beta1:
- 新增:支持点击拍照和长按录像,替换系统相机功能,CameraView基础上实现
- 新增:基于uCrop图片单张裁剪,依赖uCrop实现
- 优化:相册读取,提升读取速度(2.1W张图片和视频由原本1s+提升到300+ms)
- 优化:优化部分API,移除过时代码
- 优化:支持水印文本换行显示
说明: 2.4.5及之前版本或有意使用原版请前往EasyPhotos
2.4.5:
- 修复:当相机按钮位置在图片第一张时,点击相册页底部中间的编辑按钮会导致右下角相机按钮也显示出来
- 修复:仅显示视频时,全部视频文件夹视频重复添加问题
- 修复:点击视频无法播放问题
- 感谢:该版本由SMask贡献
2.4.4:
- 修复:修复2.4.3版本引发的图片数据加载缓慢问题
- 感谢:该版本由joker-fu贡献
2.4.3:
- 新增:start(SelectCallback callback)启动方式,通过接口回调(注意:如果callback不回调,请检查你调用处的spuper.onActivityResult()是否删除)
- 新增:filter(String... types)方式控制只显示的文件类型,支持Type.GIF和Type.VIDEO,前提是已经选择显示了gif和video
- 新增:对显示视频的时长过滤api
- 新增:单独对图片和视频的最大选择数控制
- 新增:支持相机按钮位置设置,setCameraLocation(@Setting.Location int cLocation)//默认左下角,通过设置可设置为相册第一张图片的位置
- 优化:预览页
- 感谢:该版本由joker-fu、SMask贡献
- 提示:新的api详见wiki
2.4.1:
2.4.0:
- 感谢:该版本由joker-fu贡献
- 新增:视频选择功能
- 新增API:是否启动视频选择,setVideo(boolean shouldShow)
- 优化:默认不显示gif图,可通过setGif(boolean shouldShow)控制是否显示
2.3.6:
- 修复:2.3.5出现的拼图错误
- 优化:解决部分机型在全屏预览图片返回到相册选择界面时状态栏闪烁的问题(感谢@wqxcloud)
- 优化:相册UI(将原底部操作栏中间的设置按钮样式改为编辑样式)
- 新增:相册页底部操作栏中间的编辑按钮,会根据开发者配置的清空按钮、原图按钮、拼图按钮使用情况进行显示或隐藏。(当清空按钮、原图按钮、拼图按钮都不显示时,编辑按钮隐藏。其余条件均显示。)
- 新增:可配置相册页清空按钮是否显示(详见wiki)
2.3.5:
- 修复:修复文字贴纸自动生成日期错误
- 优化:AlbumModel类,更加节省内存 (感谢@ofexe)
- 升级:compileSdkVersion 升级为28,buildToolsVersion 升级为 '28.0.3'
2.3.4:
- 修复:坚果pro和荣耀8在特殊情况下无法获取媒体文件路径的问题
2.3.3:
- 优化:过滤媒体库中存在但实际不存在的图片
2.3.2:
- 优化:状态栏颜色独立为easy_photos_status_bar
2.3.1:
- 新增:调用相册支持Fragment直接调用,走Fragment的result回调
- 修复:三星S3拍照错误
- 修复:魅族用户在极端操作下的权限错误
- 修复:app在后台时,因设备内存不足而回收资源后,在任务列表中启动app后的异常
2.3.0:
- 修复4.4.3YouTaPhone拍照时相机停止运行错误
- 修复相册中没有图片情况下,EasyPhotos自动前往相机拍照时,发生的错误
2.2.9:
- 重要修改:Photo类中的time字段的单位改为毫秒
- 优化:图片排序算法调整为与系统相册排序算法类似
- 优化:内存泄露情况
- 修复:部分机型出现少许图片丢失情况
- 修复:部分机型不读扩展SD卡中照片的情况
- 修复:三星的部分机型cl
