一款用于在Android设备上获取照片(拍照或从相册、文件中选择)、裁剪图片、压缩图片的开源工具库

效果展示:

图片拍照
图片裁剪

TakePhoto 包括以下功能:

  • 支持通过相机拍照获取图片
  • 支持从相册选择图片
  • 支持从文件选择图片
  • 支持批量图片选取
  • 支持图片压缩以及批量图片压缩
  • 支持图片裁切以及批量图片裁切
  • 支持照片旋转角度自动纠正
  • 支持自动权限管理(无需关心SD卡及摄像头权限等问题)
  • 支持对裁剪及压缩参数个性化配置
  • 提供自带裁剪工具(可选)
  • 支持智能选取及裁剪异常处理
  • 支持因拍照Activity被回收后的自动恢复
  • 支持Android7.0
  • +支持多种压缩工具
图库功能
图片选自
打开方式

使用TakePhoto有以下两种方式:

  • 方式一:通过继承的方式三者之一。

    • 继承TakePhotoActivity
    • TakePhotoFragmentActivity
    • TakePhotoFragment

      通过getTakePhoto()
      获取TakePhoto
      实例进行相关操作。
      重写以下方法获取结果

      void takeSuccess(TResult result);
      void takeFail(TResult result,String msg);
      void takeCancel();复制代码
  • 方式二:通过组装的方式
    在相对应的类中进行添加代码

    • 1.实现TakePhoto.TakeResultListener,InvokeListener
      接口。

    • 2.在 onCreate,onActivityResult,onSaveInstanceState
      方法中调用TakePhoto对用的方法。

    • 3.重写onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults)

压缩图片

你可以选择是否对图片进行压缩处理,你只需要告诉它你是否要启用压缩功能以及CompressConfig即可

多选图片

API

 /*** 启用图片压缩* @param config 压缩图片配置* @param showCompressDialog 压缩时是否显示进度对话框* @return*/void onEnableCompress(CompressConfig config,boolean showCompressDialog);复制代码

Usage:

TakePhoto takePhoto=getTakePhoto();
takePhoto.onEnableCompress(compressConfig,true);
takePhoto.onPickFromGallery();复制代码

兼容性

  • Android6.0

    由于Android6.0新增了"运行时权限控制(Runtime Permissions)",为了应对这一改变,TakePhoto加入和自动权限管理,当TakePhoto检测到需要权限时,TakePhoto会自动申请权限,所以小伙伴们不用担心权限的使用问题。

  • Android7.0

    在Android N中,Android 框架执行了 StrictMode,应用间共享文件和以前也有所区别。为了适配Android7.0的改变,同时也为了方便大家使用TakePhoto,TakePhoto会自动根据手机的Android版本自行适配,小伙伴们依旧可以向TakePhoto传递Uri imageUri = Uri.fromFile(file);
    类型的Uri而不用担心兼容性问题。

    • TakePhoto在深度兼容性方面的测试
    兼容性测试报告

博客地址:

www.jianshu.com/p/c83f06651…

项目地址:

github.com/crazycodebo…

相信自己,没有做不到的,只有想不到的

如果你觉得此文对您有所帮助,欢迎入群 QQ交流群 :232203809
微信公众号:终端研发部

技术+职场

一个强大图片的选择、裁剪工具—看这一个就够用了相关推荐

  1. Unity 如何实现一个强大的MMO技能系统!

    1. 如何实现一个强大的MMO技能系统-序章 前言 技能系统可以说是游戏中广泛存在而又最重要的系统了,它是整个游戏战斗体验的核心.一套强大的技能系统可以让游戏的策略性,可玩性得到极大的提升.然而技能系 ...

  2. 如何实现一个强大的MMO技能系统

    文章目录 如何实现一个强大的MMO技能系统--序章 前言 如何实现一个强大的MMO技能系统--AOI 前言 正文 总结 如何实现一个强大的MMO技能系统--技能 前言 正文 总结 示例 如何实现一个强 ...

  3. android 数据存储怎么保存图片_遇到验证码怎么办?Python编写一个验证码图片数据标注GUI程序!...

    做验证码图片的识别,不论是使用传统的ORC技术,还是使用统计机器学习或者是使用深度学习神经网络,都少不了从网络上采集大量相关的验证码图片做数据集样本来进行训练. 采集验证码图片,可以直接使用Pytho ...

  4. ffmpeg sdk java_推荐一个强大的音视频处理的开源项目!

    原标题:推荐一个强大的音视频处理的开源项目! 1.前景提要 在我们的开发中,经常会用到音视频相关内容,一般我们都会选择FFmpeg,但是其交叉编译对于我们来说是一件很麻烦的事情.所以这里方便日后使用就 ...

  5. 图片站选择什么样的服务器好?

    图片站选择什么样的服务器好?对于大部分图片站点来讲,图片显示的速度是关键,其他都还是次要的对吧,任何图片网站都一样,访问速度是留住访客的唯一可能性,虽然网络高速发展各类型网站都很多竞争,而很多类似于图 ...

  6. 预见未来: 微软亚洲研究院看下一个二十年

    (上图为微软全球资深副总裁.微软亚太研发集团主席.微软亚洲研究院院长洪小文) 2018年11月8日,微软亚洲研究院迎来了二十周年庆典.1998年11月,微软亚洲研究院正式在北京成立,是微软设在美国本土 ...

  7. 分享一个日文图片文字识别在线的方法

    对于一些从事贸易的朋友,尤其是一些从事国际贸易的朋友,往往需要整理很多外语资料.最近就有个小伙伴说他刚从事与一些日本企业合作,刚开始每天都需要整理大量的日文信息,但人工整理效率太低,但是如果有可以识别 ...

  8. 如何自己制作一个GIF图片

    GIF图片的制作其实是非常有用的.我们在用一些聊天软件聊天的时候总会一些GIF格式的图片,也就是所谓的动态表情图来表达自己的意思,这样更加直观,也更加形象一些.并且在斗图的时候,就是比谁的GIF表情图 ...

  9. android+待办事项+日历,TickTick Pro「滴答清单」v5.9.4.4 for Android 直装解锁高级版 —— 一个强大的待办事项和任务管理应用...

    TickTick Pro「滴答清单」是一个强大的待办事项和任务管理应用,它可以在您的所有设备上进行无缝云端同步.无论是计划行程.做备忘录.与家庭成员分享购物清单还是与您的同事协作,TickTick 都 ...

最新文章

  1. 知识点讲解三:获取重定位后的网址
  2. 《CODM》的成功源自何处?TGA年度移动游戏的总结和思考
  3. leetcode206:反转链表
  4. linux下的五种io模型,Linux下的五种IO模型
  5. 数据库 事务隔离级别之可重复读
  6. halcon算子翻译——deserialize_measure
  7. 百度免费开放长语音识别功能
  8. [LeetCode][easy]Rank Transform of an Array
  9. 怎么样学好c++_怎么样
  10. iOS---iPhoneXs iPhoneXs Max iPhoneXr
  11. 学术写作 系列1 HOW TO WRITE AN INTRODUCTION
  12. Linux上一个恶意程序分析实例:一步一步揭开病毒程序的面纱1
  13. OSPF中LSA相关内容
  14. 《明解C语言》第九章字符串课后练习题
  15. 怎么修改网页边框html,DIV+CSS网页布局之边框的设置方法
  16. 【教程】如何优雅地使用vs code代替keil开发51单片机/STC单片机
  17. ES 与关系型数据库的对比
  18. PS合成图片#ps抠图#ps视频教程入门基础学习课程小白
  19. 小马哥---高仿红米note 刷机 主板型号T7203主板图与开机识别图 6572芯片
  20. 效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】) 转...

热门文章

  1. 自签名SSL证书有风险吗?
  2. 字符串搜索算法之Sunday
  3. sprintf 用法(sprintf_s)
  4. 413 request entity too large php,413 Request Entity Too Large
  5. PreferenceFragment的简单使用
  6. 超详细 Servlet工作原理解析
  7. 假设检验中原假设和备择假设的选取问题
  8. Oracle中日期函数的使用
  9. 在MySQL中insert时生成UUID
  10. 单例模式的四种实现方式(饿汉模式、懒汉模式、静态内部类、枚举类)