导航:首页 > 操作系统 > android图片处理开源

android图片处理开源

发布时间:2023-01-23 06:55:20

android图片框架对比

对比现在主流图片框架的优势和缺点,在实际项目中如何选择适合自己的框架;

Glide、Fresco、Picasso、ImageLoader
共同优点:

以上名词介绍

在分析他们的差异、优缺点之前,我们先了解图片缓存通用的概念:

以上概念在不同框架之间可能不同,比如Displayer在ImageLoader中叫做ImageAware,在Picasso和Glide中叫做Target。

以上为Glide的总体设计图。
整个库分为RequestManager(请求管理器)、Engine(数据获取引擎)、Fetcher(数据获取器)、MemoryCache(内存缓存)、DiskLRUCache(本地缓存)、Transformation(图片处理)、Encoder(编码处理)、Registry(图片类型以及解析器配置)、Target(目标)等模块。

简单流程: Glider收到加载及显示资源任务,创建Request并将它交给RequestManager,Request启动Engine去数据源获取资源,得到资源后通过Transformation处理后交给Target.
Glide依赖DiskLRUCache、GifDecoder等开源库去完成本地缓存和Gif图片解密工作;

为Bitmap 维护一个BitmapPool对象池, 对象池的主要目的是通过减少大对象的分配以重用来提高性能!

缺点
①图片质量低:因为机制不同,速度快,但是图片的质量降低了RGB565;
②多尺寸缓存导致内存和磁盘占用多:根据ImageView大小来缓存,可能会导致一张图片可能根据展示情况来缓存不同尺寸的几份;

扩展理解参考: https://www.jianshu.com/p/1ab5597af607

以上为Picasso的总体设计图。
整个库分为Dispatcher、RequestHandler以及Downloader、PicassoDrawable等模块。
简单流程: Picasso收到加载显示图片任务后,创建Request并将它交给Dispatcher,Dispatcher分发任务到具体RequestHandler,任务通过MemoryCache及Handler(数据获取接口)获取图片,图片获取成功后通过PicassoDrawable显示到Target中;

上面Data的File system部分,Picasso没有自定义本地缓存的接口,默认使用http的本地缓存,API19以上使用okhttp,一下使用UrlConnection,所以如果需要自定义本地缓存就需要自定义Downloader;

缺点 :加载速度没有其他框架快;
特点 :只缓存一个全尺寸的图片,根据需求的大小在压缩转换;

以上为Fresco的总体设计图
整个库分为UI:DraweeView(View控件)、Drawable(图片数据)、DraweeController(图片控制器)、DraweeHiierarchy(图片体系);Core:DataSource(数据源)、ImagePipeline(图像管道)、Procer(生产者)、ProcerFacotry(生产工厂)、Subcriber(订阅)、Supplier(供应者)、Consumer(消费者);IO/Data:MemoryCache(内存缓存)、Network、DiskCache(磁盘缓存)、Recourse(本地资源)

简单流程: 从上面的结构可以看出,fresco主要采用了工厂+建造者的模式实现功能,逻辑划分比较清楚;Fresco框架整体是一个MVC模式,DrawableView--->View用来显示顶层视图、DrawableController--->Control控制加载图片的配置 事件的分发、DrawableHierarchy--->Model 用于存储和描述图片信息,同时也封装了一些图片的显示和视图层级的方法;ImagePipeline模块负责从网络、本地文件系统、本地资源加载图片

缺点:
①框架大,影响Apk体积;
②一定的学习成本,使用比较繁琐,需要使用内部提供的ImageView控件,使用起来比较复杂;

⑵ 推荐几个Android开源库

图片处理有:Universal Image Loader、Glide、Picasso、Fresco

响应式编程有:RxJava、Google Agera 、RxAndroid、RxBinding、RxJavaJoins

依赖注入有:ButterKnife、Dagger、AndroidAnnotations

这边有一份Android开源框架及相应框架解析参考资料可以做下参考

⑶ Android开发中的圆角图片+圆形图片,看这一篇就够了!

  最近在苦练Kotlin,一款不错的app(开眼)中的布局吸引了我,也在不懈的努力下通过Kotlin语言完成了开眼首页的RecyclerView多ViewType布局效果,开心!(文末会贴出来)其中用到的图片处理控件很实用,也在日常的项目中会经常用到,因此安利给大家!
  本次就针对Android开发中的图片处理给大家安利两个开源库:CircleImageView(圆形图片)+RoundedImageView(圆角图片)。

Tips: Kotlin实现,写完整个项目会分享git源码给大家!
没错,这是一个RecyclerView布局实现的~

⑷ android 开发线型图,柱状图用什么开源的插件

为大家介绍一款图标开源库MPAndroidChart,它不仅可以在Android设备上绘制各种统计图表,而且可以对图表进行拖动和缩放操作,用起来非常灵活。MPAndroidChart同样拥有常用的图表类型:线型图、饼图、柱状图和散点图。
mpandroidchartlibrary.jar包下载地址:
https://github.com/PhilJay/MPAndroidChart/releases
下面主要实现以下饼状图:
1.从上面的地址中下载最新mpandroidchartlibrary-2-0-8.jar包, 然后到项目的libs中
2. 定义xml文件

⑸ 32个实用酷炫的Android开源UI框架

1.Side-Menu.Android

分类侧滑菜单 , Yalantis 出品。

项目地址: https://github.com/Yalantis/Side-Menu.Android

2.Context-Menu.Android

可以方便快速集成漂亮带有动画效果的上下文菜单, Yalantis 出品。

项目地址: https://github.com/Yalantis/Context-Menu.Android

3.Pull-to-Refresh.Rentals-Android

提供一个简单可以自定义的 下拉刷新 实现,Yalantis 出品。

项目地址: https://github.com/Yalantis/Pull-to-Refresh.Rentals-Android

4.Titanic

可以显示水位上升下降的TextView

项目地址: https://github.com/RomainPiel/Titanic

5.AndroidSwipeLayout

滑动Layout ,支持单个View,ListView,GridView

项目地址: https://github.com/daimajia/AndroidSwipeLayout

Demo地址: Download Demo

6.Android Typeface Helper

可以帮你轻松实现自定义字体的库

项目地址: https://github.com/norbsoft/android-typeface-helper

7.android-lockpattern

Android的图案密码解锁

项目地址: https://code.google.com/p/android-lockpattern/

Demo地址: https://play.google.com/store/apps/details?id=group.pals.android.lib.ui.lockpattern.demo

文档介绍: https://code.google.com/p/android-lockpattern/wiki/QuickUse

APP示例:Android开机的图案密码解锁,支付宝的密码解锁

8.ToggleButton

状态切换的 Button,类似 iOS,用 View 实现

项目地址: https://github.com/zcweng/ToggleButton

9.WilliamChart

绘制图表的库,支持LineChartView、BarChartView和StackBarChartView三中图表类型,并且支持 Android 2.2及以上的系统。

项目地址: https://github.com/diogobernardino/WilliamChart

Demo地址: https://play.google.com/store/apps/details?id=com.db.williamchartdemo

Demo项目: https://github.com/diogobernardino/WilliamChart/tree/master/sample

10.实现滑动ViewPager渐变背景色

项目地址: https://github.com/TaurusXi/GuideBackgroundColorAnimation

11.Euclid

用户简历界面, Yalantis 出品。

项目地址: https://github.com/Yalantis/Euclid

12. InstaMaterial

Instagram的一组Material 风格的概念设计

项目地址: https://github.com/frogermcs/InstaMaterial

13. SpringIndicator

使用bezier实现粘连效果的页面指示

项目地址: https://github.com/chenupt/SpringIndicator

14. BezierDemo

仿qq消息气泡拖拽 消失的效果。

项目地址: https://github.com/chenupt/BezierDemo

15. FoldableLayout

折叠的信纸被打开一样的动画效果

项目地址: https://github.com/alexvasilkov/FoldableLayout

16.Taurus

下拉刷新,Yalantis 出品。(是不是有点似曾相识呢?)

项目地址: https://github.com/Yalantis/Taurus

17. PersistentSearch

在点击搜索的时候控件在原有位置显示输入框。

项目地址: https://github.com/Quinny898/PersistentSearch

18. circular-progress-button

带进度显示的Button

项目地址: https://github.com/dmytrodanylyk/circular-progress-button

19. discrollview

当上下滚动的时候子元素会呈现不同动画效果的scrollView,网页上称之为:视差滚动

项目地址: https://github.com/flavienlaurent/discrollview

20. sweet-alert-dialog

一个带动画效果的 自定义对话框样式

项目地址: https://github.com/pedant/sweet-alert-dialog

21. android-floating-action-button

Material Desig风格的 浮动操作按钮

项目地址: https://github.com/futuresimple/android-floating-action-button

22. android-collapse-calendar-view

可以在月视图与周视图之间切换的calendar控件

项目地址: https://github.com/blazsolar/android-collapse-calendar-view

22. android-collapse-calendar-view

可以在月视图与周视图之间切换的calendar控件

项目地址: https://github.com/blazsolar/android-collapse-calendar-view

23. NumberProgressBar

个简约性感的数字进度条

项目地址: https://github.com/daimajia/NumberProgressBar

24. CircularProgressView

CircularProgressView 是通过自定义view的方式实现的Material风格的加载提示控件,兼容任何版本。

项目地址: https://github.com/rahatarmanahmed/CircularProgressView

25. OriSim3D-Android

opengl 实现了各种折纸效果,模拟了从一张纸折叠成一条船的整个过程

项目地址: https://github.com/RemiKoutcherawy/OriSim3D-Android

26、万能日历控件:CalendarView

GitHub: https://github.com/huanghaibin-dev/CalendarView

中文使用文档: https://github.com/huanghaibin-dev/CalendarView/blob/master/QUESTION_ZH.md

27、大图查看器: BigImage ImageView ViewPager

Github: https://github.com/SherlockGougou/BigImageViewPager

地址: https://www.jianshu.com/p/b15e65791c3f

支持超长图、超大图的图片浏览器,优化内存,支持手势放大、下拉关闭、查看原图、加载百分比、保存图片等功能。现已支持androidx。

28、安卓工具包androidUntilCode(安卓必备)

Github: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/README-CN.md

29、万能适配器-BRAVH

官网: http://www.recyclerview.org

GitHub: https://github.com/CymChad/BaseRecyclerViewAdapterHelper

RecyclerView

作为Android最常用的控件之一,是否常常为“她”操碎了心

BRVAH受益群体是所有Android开发者,希望更多开发者能够一起来把这个项目做得更好帮助更多人

30、智能刷新控件--SmartRefreshLayout

GitHub: https://github.com/scwang90/SmartRefreshLayout

中文: https://gitee.com/scwang90/SmartRefreshLayout

SmartRefreshLayout以打造一个强大,稳定,成熟的下拉刷新框架为目标,并集成各种的炫酷、多样、实用、美观的Header和Footer。 正如名字所说,SmartRefreshLayout是一个“聪明”或者“智能”的下拉刷新布局,由于它的“智能”,它不只是支持所有的View,还支持多层嵌套的视图结构。 它继承自ViewGroup 而不是FrameLayout或LinearLayout,提高了性能。 也吸取了现在流行的各种刷新布局的优点,包括谷歌官方的 SwipeRefreshLayout , 其他第三方的 Ultra-Pull-To-Refresh 、 TwinklingRefreshLayout 。 还集成了各种炫酷的 Header 和 Footer。

31、内存泄漏检测工具--leakcanary

使用方式: https://www.jianshu.com/p/b83ddffcb3b5

LeakCanary是Square公司基于MAT开源的一个工具,用来检测Android App中的内存泄露问题。官方地址: https://github.com/square/leakcanary

32、 1218683832 / AndroidSlidingUpPanel

SlidingUpPanelLayout:可以上下滑动的菜单布

https://github.com/1218683832/AndroidSlidingUpPanel

⑹ 有哪些 Android 的开源界面库

比较火爆的Android开源库有以下:1、volley主要有以下模块:(1)JSON,图像等的异步下载;(2)网络请求的排序(scheling)(3)网络请求的优先级处理(4)缓存(5)多级别取消请求(6)和Activity和生命周期的联动(Activity结束时同时取消所有网络请求)2、android-async-http主要有以下模块:(1)在匿名回调中处理请求结果(2)在UI线程外进行(3)文件断点上传(4)智能重试(5)默认gzip压缩(6)支持解析成Json格式(7)可将Cookies持久化到SharedPreferences3、Afinal框架主要有四大模块:(1)数据库模块:android中的,使用了线程池对sqlite进行操作。(2)注解模块:android中的ioc框架,完全注解方式就可以进行UI绑定和事件绑定。无需findViewById和setClickListener等。(3)网络模块:通过httpclient进行封装http数据请求,支持ajax方式加载,支持下载、上传文件功能。(4)图片缓存模块:通过FinalBitmap,imageview加载bitmap的时候无需考虑bitmap加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象。4、xUtils框架主要有四大模块:(1)数据库模块:android中的,一行代码就可以进行增删改查;(2)注解模块:android中的ioc框架,完全注解方式就可以进行UI,资源和事件绑定;(3)网络模块:支持同步,异步方式的请求;(4)图片缓存模块:加载bitmap的时候无需考虑bitmap加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象;5、ThinkAndroid主要有以下模块:(1)MVC模块:实现视图与模型的分离。(2)ioc模块:android中的ioc模块,完全注解方式就可以进行UI绑定、res中的资源的读取、以及对象的初始化。(3)数据库模块:android中的,使用了线程池对sqlite进行操作。(4)http模块:通过httpclient进行封装http数据请求,支持异步及同步方式加载。(5)缓存模块:通过简单的配置及设计可以很好的实现缓存,对缓存可以随意的配置(6)图片缓存模块:imageview加载图片的时候无需考虑图片加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象。(7)配置器模块:可以对简易的实现配对配置的操作,目前配置文件可以支持Preference、Properties对配置进行存取。(8)日志打印模块:可以较快的轻易的是实现日志打印,支持日志打印的扩展,目前支持对sdcard写入本地打印、以及控制台打印(9)下载器模块:可以简单的实现、后台下载、、对下载进行控制、如开始、暂停、删除等等。(10)网络状态检测模块:当网络状态改变时,对其进行检6、LoonAndroid主要有以下模块:(1)自动注入框架(只需要继承框架内的application既可)(2)图片加载框架(多重缓存,自动回收,最大限度保证内存的安全性)(3)网络请求模块(继承了基本上现在所有的)(4)eventbus(集成一个开源的框架)(5)验证框架(集成开源框架)(6)json解析(支持解析成集合或者对象)(7)数据库(不知道是哪位写的忘记了)(8)多线程断点下载(自动判断是否支持多线程,判断是否是重定向)(9)自动更新模块(10)一系列工具类

⑺ (译)uCrop介绍 —— 我们自己的Android图片裁剪库

原文链接: https://yalantis.com/blog/introcing-ucrop-our-own-image-cropping-library-for-android

译者: Eirture

我们在 Yalantis 开发了许多不同的 Android 应用,经验告诉我们,几乎在所有的应用中,都需要图片裁剪的功能。图片裁剪的用途很广,从简单的用户头像调整到图片的比例裁剪、灵活变换等各种复杂的处理。

我们想为所有的用户提供最好的图片处理工具,所以决定创建Android的图片裁剪库 uCrop 。 可以在 Proct Hunt 上为 uCorp 投票。

也许你会好奇,为什么我们不使用现成的 Android 图片裁剪解决方案。 毕竟,可以在 Github 或者 Android Arsenal 上找到很多这类的库。但是问题是,那些解决方案都不满足我们的需求。我们来看一些主流的开源图片裁剪库,为什么不符合我们的需求。

我在几个项目里面使用了 SoundCloud 库很成功,但是仍然有几个问题让我很头痛。

首先,你操作的是一个裁剪的框,而不是图片本身。当需要裁剪一个很小面积的图片时,这会你感觉有点痛苦。这是与用户使用习惯向悖的。我确信 Instagram 传授给我们的是一些优秀的 UX (用户体验),可以移动的裁剪框也已经灭绝了。

其次,SoundCloud 裁剪库不允许用户旋转图片。Come on, guys! 所有人都知道,有成百上千“不可思议”的安卓手机给照片设置了错误的EXIF信息(谢天谢地,我们有 CWAC 来清理这个烂摊子)。而且,很大部分的用户是希望能够转动图片的(不仅仅是 90 度)。

最后同样重要的一点,使用 SoundCloud 库不能改变长宽比。当然,如果你使用它仅仅是需要获取一个方形的头像,那没有任何问题。但是,其它很多很有趣的头像形状,用这个库无法实现。

Scissors 是一个新的库,不久前我在一个 安卓问题周刊 上看到它的时候特别激动。但 5 分钟内我的兴奋就消失了。引用一句关于 Scissors 的 博文 :

这确实是一个值得称赞的方法。实际上,我们找到又是一个不能旋转图片,也不能动态调整宽高比的库。尽管 Scissors 集成了一些主流的图片加载库,像 Picasso , Glide 以及 Universal Image Loader 。希望 Scissors 在后续的版本中有更多实用的功能。

分析完这些现有库的缺点,我们决定创建 自己的库 ,支持手势并且有一个良好的 UX。

安卓库 uCrop 允许你修剪图片来更好的使用。uCrop 重要的特性如下:

uCrop 有一个初始化的构建类型接口,来为你的应用配置一些适当的属性。uCrop 库最低的版本要求是 API 10,示例应用工作的版本是 API 15+ 。

你可以改变下面这个设置:

在下一篇文章中,将会展示我们构建 uCrop 的经历,敬请关注!

⑻ Android:深入了解图片加载库Glide的生命周期管理(源码分析)

Glide ,该功能非常强大 Android 图片加载开源框架 相信大家并不陌生

阅读本文前,请务必先阅读Glide的图片加载功能源码分析: Carson带你学Android:图片加载库Glide源码分析

该方法在图片加载库Glide加载图片的源码分析中曾进行详细说明,具体请看: Carson带你学Android:图片加载库Glide源码分析

至此,关于图片加载库的Gilde生命周期管理讲解完毕。下面我将继续对 Glide 的其他功能进行源码分析 ,有兴趣可以继续关注Carson带你学Android开源库系列文章:

不定期分享关于 安卓开发 的干货,追求 短、平、快 ,但 却不缺深度

阅读全文

与android图片处理开源相关的资料

热点内容
pythonlinuxdjango 浏览:562
php中文返回乱码 浏览:89
宿舍装的电信怎么加密 浏览:745
为什么压缩文件解压后变少了 浏览:426
现在安卓充电器普遍是什么型号 浏览:714
9日均线36均线主图指标源码 浏览:349
程序员阿里文化完整版 浏览:98
早间新闻在哪个app上面可以看 浏览:954
工作啦app注册的信息怎么删去 浏览:378
滚动转子式制冷压缩机 浏览:873
美国编程用什么软件 浏览:571
图片加密防盗用 浏览:616
dbscan算法python源码 浏览:849
固态硬盘文件夹删不掉 浏览:717
阳泉工会app怎么培训报名 浏览:669
编程图形二级题 浏览:549
怎样知道自己的app存在哪个文件夹 浏览:853
电子手帐app怎么下载 浏览:810
app播客是怎么赚钱的 浏览:380
东南亚服务器是什么档次 浏览:132