Skip to content

兼容android 10,自定义相机拍照。android图片选择、裁剪、压缩,自定义相机仿微信拍照,相册选择(单选/多选),文件夹图片选择(单选/多选),各界面根据状态栏颜色智能适配状态栏字体颜色变色为深色或浅色,根据使用场景智能适配沉浸式状态栏,内部处理运行时权限,支持Glide/Picasso/Fresco/Imageloader等所有图片加载框架库的带默认勾选选中图片的能填充自定义广告的自定义Ui相机相册图片浏览选择器;更有拼图/文字贴纸/贴图/图片缩放/Bitmap图片添加水印/媒体文件更新到媒体库等众多Bitmap图片编辑功能的android Bitmap图片处理工具框架库。

License

Notifications You must be signed in to change notification settings

joker-fu/EasyPhotos

Repository files navigation

EasyPhotos

EasyPhotos地址

适配完成Android10之后,将主要维护master分支(AndroidX),support分支仅修复bug。

签名信息遗忘,APK暂未更新,请直接跑 demo

License QQ群

无选中状态(默认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方式)

  1. 在项目的 build.gradle(project) 文件里面添加:
allprojects {
    repositories {  
        maven { url "https://jitpack.io" }
    }
}
  1. 你需要用到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.** { *; }

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-fuSMask贡献
  • 提示:新的api详见wiki

2.4.1:

  • 优化:2.4.0中的代码
  • 感谢:该版本由joker-fuSMask贡献

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卡中照片的情况
  • 修复:三星的部分机型clearFilterColor()方法无效的情况
  • 修复:三星的部分机型因在xml中绑定点击事件导致的点击无效的情况
  • 修改:单选选中图标改为数字1
  • 其他:demo中新增了内存泄露检测工具,如使用中发现内存泄露,麻烦告知,我将第一时间处理,感谢!

2.2.8:

  • bug修复:在预览页点击最后一张的选择无效,以及因此产生的数组越界bug
  • bug修复:极少情况下的预览页直接返回产生的空指针问题
  • 感谢@zijinzhiyun 反馈以上bug

2.2.6:

  • api修改:为统一api标准,将所有返回Key统一为EasyPhotos.RESULT_PHOTOS和EasyPhotos.RESULT_PATHS。带来的改变就是单独使用拼图功能时的图片返回Key改为EasyPhotos.RESULT_PHOTOS和EasyPhotos.RESULT_PATHS,去除原来的EasyPhotos.RESULT_PUZZLE_PHOTO和- EasyPhotos.RESULT_PUZZLE_PATH这两个Key。
  • UI修改:预览页状态栏颜色与colorPrimaryDark色值对应。若其色值趋近于白色,在无虚拟按键的手机中状态栏字体颜色智能适配为深色,有虚拟按键的手机中状态栏智能优化为透明色。(除预览页外,其他页面若状态栏颜色趋近于白色,无论任何机型均为智能优化字体颜色为深色,查看详情。
  • 错误修复:修复努比亚机型的预览页占用导航栏问题

2.2.4:

  • 优化:单独启动相机时无需配置图片加载引擎
  • 优化:示例中配置Glide4.x为图片加载引擎的示例文件改为单例模式

2.2.3:

  • 修复拼一张更换图片时发生的错误
  • 修复单独启动相机时的权限错误
  • 优化混淆规则

2.2.2:

  • 重大更新:EasyPhotos去除了Glide的依赖,并对外提供ImageEngine接口,通过对ImageEngine接口的实现,使用者可以快速绑定如Glide、picasso、fresco、Imageloader等你正在使用的任意图片加载库。点击查看详情
  • 界面优化:优化单选图标
  • 修改文字贴纸的文字编辑页面中,底部操作栏的背景色为固定色值(其实也可以改,看看EasyPhotos的color文件你就知道怎么改)

2.1.0:

  • 新增功能:EasyPhotos智能识别状态栏的背景颜色,当其趋近于白色时,智能适配深色状态栏字体。(该功能仅对6.0以上系统生效,并没有适配6.0以下的小米和魅族,如有需要可以加群交流)
  • 新增功能:可配置是否显示Gif动图
  • 功能优化:Gif动图的处理方式。
  • 界面优化:Gif动图、相机按钮等。
  • 新增字段:
<string name="gif_easy_photos">动图</string>    

具体查看11-多语言

  • 内部升级:最新版编译工具和最新版sdk

2.0.2:

  • 升级:Glide到4.5.0(不影响低版本使用)
  • 修复:拼一张功能因图片过多过大导致的oom问题
  • 感谢@Beiler 提出的反馈

2.0.1:

  • 修复bug:单独使用拼图功能时,以图片路径为参数时产生的数组越界bug。

2.0.0:

  • 新增功能:相册内部自带拼一张功能(可通过配置不使用该功能,该模式拼图保存的图片存储在 sd卡根目录/你的app_name 文件夹下)
  • 新增功能:拼图页面增加文字贴纸功能
  • 界面优化:无权限时的相册界面优化,使之更加友好
  • 界面优化:相机按钮优化,视觉和体验上都更加友好
  • 界面优化:专辑列表细节优化,更加自然、大气
  • 功能优化:相册界面打开相机,拍照后不直接返回,而是默认选中拍完的图片,停留在相册界面
  • 字段增加:具体查看11-多语言
  • 重要修改:Photo对象去除isCamera成员变量。构造函数也因此相应改变,少了一个参数。
  • 重要修改:setFileProviderAuthoritiesText()方法更改为setFileProviderAuthority()方法
  • 重要修改:UI色值重新定义,由原来的三十几种色值统一修改为7个色值,自定义起来更加方便。具体查看10-自定义UI样式

1.3.2:

  • 新增功能:
    • 拼图(最多对9张图片进行拼图,无需关心运行时权限,内部处理好了)
    • 把View画成Bitmap
    • 保存bitmap到本地(可设置是否更新到媒体库,如果调用此方法前没有进入过EasyPhotos的相册或相机,则需要你自己处理读写权限)
  • 更换相册单选的选中图标样式
  • 修复回调选中地址的key:RRESULT_PATHS 修复为 RESULT_PATHS。(ps:对如此智障的疏忽表示歉意。)
  • 修复永久不给权限情况下,退出相册时发生的错误
  • 修复调用系统权限设置页返回时,相册页面或拼图页面自销毁情况
  • 新增字符串:
    <string name="done_easy_photos">完成</string>
    <string name="cancel_easy_photos">取消</string>
    <string name="template_easy_photos">模板</string>    
  • 新增色值:
    <!--图片预览页-->
    <color name="preview_status_easy_photos">#d73c3d41</color>//api21以上预览页状态栏颜色为该色值;api19和api20状态栏为透明色;其余api状态栏或透明或黑或灰,取决于各家rom和有无实体按键等因素。注:其余页面状态栏根据你的主题走

    <!--拼图页-->
    <color name="puzzle_background_easy_photos">#000000</color>//拼图页面背景色
    <color name="puzzle_selected_frame_easy_photos">#57a457</color>//拼图页面当前处理item的边框颜色
    <color name="puzzle_selected_controller_easy_photos">#00AA00</color>//拼图页面当前处理item的操作bar颜色,就是item边框中凸起矩形的色值
    <color name="puzzle_menu_easy_photos">#969696</color>//拼图页面的文字按钮和示例图片颜色
    <color name="puzzle_menu_done_easy_photos">#009700</color>//拼图页面的完成按钮文字颜色
    <color name="puzzle_bottom_bar_line_easy_photos">#ee3a3a3e</color>//拼图的底部栏间隔颜色
    <color name="puzzle_photo_background">#ffffff</color>//图片的背景颜色    

1.2.8:

  • 修复'选中图片列表'点击状态下与'大图列表和选择器'的联动错误

1.2.7:

  • 大图预览页新增:大图列表与选中图片列表联动
  • 升级 classpath 'com.android.tools.build:gradle:3.0.1'
  • 新增色值:
<color name="preview_bottom_bar_easy_photos">#eb212123</color>//预览页的底部栏和选中图片列表背景颜色    
<color name="preview_bottom_bar_line_easy_photos">#ee3a3a3e</color>//预览页的底部栏与选中图片列表的分割线颜色  

1.2.6:

  • 正式开放,投入使用
  • 广告view可以传空,适用于VIP不显示广告场景

1.2.3:

  • 优化图片限制方式:最小宽度、最小高度、最小文件大小
  • 如果单一设置,满足条件即过滤
  • 如果多项设置,满足一项即过滤

1.2.2:

  • 新增返回结果:图片地址集合
  • 新增返回结果:用户是否选中原图选项
  • 新增返回结果:图片信息集合
  • 新增设置默认勾选图片集合方式:图片地址集合
  • 新增设置默认勾选图片集合方式:图片信息集合

1.2.1:

  • 优化预览界面全屏动效
  • 优化Photo实体对象

1.2.0:

  • 升级图片选取返回信息(图片地址/宽高/文件大小/文件修改时间/文件类型/用户是否点击原图选项/文件名)
  • 图片选择新增原图选项
  • 预览界面支持选择完成
  • 预览界面支持当前图片位置显示

1.1.1:

  • 优化相机和相册的调用API,使之更加友好

1.1.0:

  • 增加图片添加水印功能
  • 增加媒体文件更新到媒体库功能

1.0.9:

  • 优化三星部分机型因图片更新到媒体库时没有更新宽高信息时EasyPhotos相册不显示该图片问题

1.0.8:

  • 优化自定义UI和多语言

1.0.7:

  • 性能优化

1.0.6:

  • 修复华为VNS-L31机型拍照无返回问题

1.0.5:

  • 修复拍照切换横竖屏发生内存泄漏
  • 修复切换语言时产生错误
  • 升级glide为最新版4.3.0

1.0.4:

  • 直接启动相机
  • 相册单选
  • 相册多选
  • 相册中支持添加自定义广告
  • 图片预览(缩放/全屏)
  • UI可定制
  • 根据图片宽高进行过滤
  • 修复无图片显示时的异常
  • 内部处理权限问题,无需配置,无需处理运行时权限

感谢

subsampling-scale-image-view:一个强大的大图长图缩放库,由[davemorrissey](https://github.com/davemorrissey 编写。

PhotoView:一个强大的图片缩放库,由[chrisbanes](https://github.com/chrisbanes 编写。

PuzzleView:一个强大的拼图库,我的拼图功能是在此基础上实现,这个库由wuapnjie 编写。

CameraView:一个仿微信点击拍照长按录像,由CJT2325编写.

uCrop:一个知名强大的图片裁剪库,由Yalantis编写

除uCrop PhotoView外,其他都依赖源码修改实现,大可不必担心有冲突情况

About

兼容android 10,自定义相机拍照。android图片选择、裁剪、压缩,自定义相机仿微信拍照,相册选择(单选/多选),文件夹图片选择(单选/多选),各界面根据状态栏颜色智能适配状态栏字体颜色变色为深色或浅色,根据使用场景智能适配沉浸式状态栏,内部处理运行时权限,支持Glide/Picasso/Fresco/Imageloader等所有图片加载框架库的带默认勾选选中图片的能填充自定义广告的自定义Ui相机相册图片浏览选择器;更有拼图/文字贴纸/贴图/图片缩放/Bitmap图片添加水印/媒体文件更新到媒体库等众多Bitmap图片编辑功能的android Bitmap图片处理工具框架库。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages