android 常用的图片加载框架

Qt C++实现HTTP/HTTPS服务器与客户端:从Socket到协议解析全流程 HTTP协议作为Web通信的基础,定义了客户端与服务器之间基于文本的请求-响应模型。其工作原理是通过TCP连接传输结构化的报文,实现资源获取与数据交换。在C++开发中,掌握HTTP协议底层实现具有重要技术价值,能够帮助开发者构建高性能、可深度定制的网络应用,尤其适用于嵌入式设备管理、桌面应用后端等场景。本文聚焦于使用Qt框架的QTcpSocket和QSslSocket组件,从Socket层面手动实现完整的HTTP/HTTPS通信栈,涵盖协议解析、流式处理、路由分发等核心环节,并深入探讨了HTTPS证书验证、 阅读详情

主流图片加载框架?

1> Picasso

2> Glide

3> Fresco

4> ImageLoader

介绍:

Picasso:和Square的网络库一起能发挥最大作用,因为Picasso可以选择将网络请求的缓存部分交给了okhttp实现

 

Glide:模仿了Picasso的API,而且在他的基础上加了很多的扩展(比如gif等支持),Glide默认的Bitmap格式是RGB_565,比 Picasso默认的ARGB_8888格式的内存开销要小一半;Picasso缓存的是全尺寸的(只缓存一中),而Glide缓存的是跟ImageView尺寸相同的(即56*56和128*128是两个缓存)。

 

Fresco:最大的又是在于5.0以下(最低2.3)的Bitmap加载。在5.0以下系统,Fresco将图片放到一个特别的内存区域(Ashmem区)。当然,在图片不显示的时候,占用的内存会自动被释放。这会使得APP更加流畅,减少因图片内存占用而引发的OOM。为什么说5.0以下呢?因为在5.0系统以后系统默认就是存储在Ashmem区了。

 

ImageLoader:旨在为图像加载,缓存和显示提供强大,灵活可定制的工具。他提供了大量的配置选项和良好的控制图像加载和缓存过程。

 

下面简单说一说这些框架的使用:

Picasso的基本使用:

将Picasso添加进项目后,只需一行就搞定:

Picasso.with(context).load(imageUrl).into(imageView);

1.自动将图像缓存在本地;

2.通过图片压缩转换以减少内存消耗

3.自动处理了ImageView的回收,即自动取消不在事业范围内的ImageView视图资源的加载;

Picasso裁剪:

Picasso.with(context).load(imageUrl).resize(50,50).centerCrop.info(imageView);

自定义格式转换:

为了实现更多想要转换的效果,可以自己实现一个Transformation接口的类,然后将其对象传递给transform()方法:

public class myTransformation implements Transformation{

                    @Override

                    public Bitmap transform(Bitmap source){

                               //对source实现自定义裁剪

                     }

                    @Override     

                    public String key(){

                              return "square()"

                 }

           }

占位符图片:

所谓的占位符图像即当图片为正常显示时默认的图片,通过placeholder()设置,Picasso也支持设置图片显示错误是显示的默认图片,通过error()设置

Picasso.with(context).load(imageUrl).placeholder(R.drawable.image_placeholder).error(R.drawable.image).into(imageView);

载入本地资源:

除了通过网络下载图片,Picasso也可以载入本地图片资源:

    Picasso.with(context).load(R.deawable.icon).into(imageView);

    Picasso.with(context).load("file://android_asset/Android.png").into(imageView);

    Picasso.with(context).load(new File(...)).into(imageView);

调试:为了方便调试,你可以通过测试Picasso的setIndicatiorEnabled(true);可以让不同来源的图片显示一个不同的色彩标记

 

2.Glide最火图片加载开源框架加载Gif资源到ImageView中

通常ImageView不能加载Gif图片,如果不做任何处理的话,加载到ImageView中的Gif只显示第一帧。网上大多方案都是借助Android的Movie,把gif图片作为流,解析成Android Movie显示,这些定制的基本思想就是线检测图片资源是否为Gif图片,若是,则按照Android Movie解析之。

Glide,本身在图片加载和缓存方面做得比较优秀,同时架子啊Gif图也很方便,把需要加载的Gif图片放到drawable目录下,然后就和普通的ImageView设置一个图片资源R.drawable.xx 一样,很简单。或者从网络URL加载一个图片,开发者不用关心这个图片资源是否是gif还是其他jpg还是png等等格式,直接将其当做一个普通的图片加载即可,

使用:

Glide.with(this).load(R.drawable.loading).into(imageView);

 

3.Fresco让图片的渐进式呈现的强大框架

Fresco中有个 image pipeline 的模块,负责从网络,从本地文件系统,本地资源加载图片。为了最大限度节省空间和cpu时间,他含有3级缓存设计(2级内存,1级文件)

Fresco中设计有一个叫做Drawees模块,方便地显示loading图,当图片不再显示在屏幕上时,及时地释放内存和空间占用。

Fresco支持Android2.3及以上系统

特性

     内存管理:

解压后的图片,即Bitmap,占用大量的内存。大的内存占用势必会引发更加频繁的GC。在5.0以下,GC将会显著的引发界面卡顿。在5.0以下系统,Fresco将图片放到一个热别的内存区域。当然,在图片不显示的时候,占用的内存会自动释放。这会使得APP更加流畅,减少因为图片内存占用而引发的OOM。

Fresco在低端机器是上一样出色,你再也不用因图片内存占用而思前想后。

     图片的渐进式呈现:

渐进式的JPEG图片格式已经流行数年了,渐进式图片格式先呈现大致的图片轮廓,然后UI随着图片下载的继续,呈现逐渐清晰的图片,这对于移动设备,尤其是网络有几大的利好,可带来更好的用户体验。

Android本身的图片库不支持次格式,但是Fresco支持,使用是,和往常一样仅仅需要提供一个图片的URL即可.

GIF图和WebP格式:

支持GIF,支持WebP格式

     图像的呈现:

Fresco的Drawees设计,带来一些有用的特性:

自定义居中焦点(对人脸等图片显示非常有帮助)

元教徒,当然圆圈也行。

下载失败后,点击重新下载

自定义占位图,自定义overlay,或者进度条

指定用户按压式的overlay

     图像的加载

Fresco的 image pipeline 设计,允许用户在多方面控制图片的加载:为同一个图片指定不同的远程路径,或者使用已经存在本地缓存中的图片先显示一个低解析度的图片,等高清图下载完之后在现实高清图

     加载完成回调通知

对于本地图,如有EXIF缩略图,在大图加载完成之前,可先显示缩略图

缩放或者旋转图片

处理已下载的图片

WebP支持

 

4.ImageLoader

特性:

多线程图像加载(异步或者同步);

ImageLoader配置的广泛定制(线程池,下载器,解码器,内存和磁盘缓存策略,显示图像选项等);

每个显示图像调用的许多自定义选项(存根图像,缓存开关,解码选项,位图处理和显示等);

内存和/或磁盘上的图像缓存(设备的文件系统或SD卡);

监听加载过程(包括下载进度)

根据控件的大小对Bitmap进行裁剪,减少Bitmap占用过多的内存

较好的控制图片的加载过程,例如暂停图片加载,重新开始加载,一般使用在ListView,GridView中,滑动过程中暂停加载图片,停止滑动的时候去加载图片

提供在较慢的网络下对图片进行加载

5.Picasso,Fresco,Glide,ImageLoader优劣

Fresco:

优点:

1.图片存储在安卓系统的匿名共享内存,而不是虚拟机的堆内存中,图片的中间缓冲数据也存放在本地堆内存,所以,应用程序有更多的内存使用,不会因为图片加载而导致oom,同时也减少垃圾回收器频繁回收Bitmap导致的界面卡顿,性能更高。

2.渐进式加载JPEG图片,支持图片从模糊到清晰加载

3.图片可以以任意的中心店显示在ImageView,而不仅仅是图片的中心

4.JPEG图片改变大小也是在native进行的,不是在虚拟机的堆内存,同样减少OOM

5.很少的支持GIF图片的显示

缺点:

框架较大,影响APK体积

使用较繁琐

 

ImageLoader,Picasso,Glide:这三者实现机制都差不多

 

ImageLoader:

比较老的框架,稳定,加载速度适中,缺点在于不支持GIF图片加载,使用稍微繁琐,并且缓存机制没有和http的缓存很好的结合,完全是自己的一套缓存机制

 

Picasso:

使用方便,一行代码完成加载图片显示,框架体积小

缺点在于不支持GIF,并且他可能是想让服务器去处理图片的缩放,他缓存的图片是未缩放的,并且默认使用ARGB_8888格式缓存图片,缓存体积大

 

Glide:

可以说是Picasso的升级版,有Picasso的优点,并且支持GIF图片的加载,图片缓存也会自动缩放,默认使用RGB_565格式缓存图片,是Picasso缓存体积的一半

 

总结:

        Picasso所能实现的功能,Glide都能做,无非是所需的设置不同。但是Picasso体积比起Glide小太多,如果项目中网络请求本身用的就是okhttp或者retrofit(本质还是okhttp),那么建议用Picasso,体积会小很多。Glide的好处就是处理大型的图片流,比如gif、Video,如果你们是做美拍、爱拍这种视频类应用的话,建议使用Glide。

Freaso在5.0以下的内存优化非常好,代价就是体积也非常大,按体积算Fresco > Glide > Picasso

不过在使用起来也有些不便(建议:他只能用内置的一个ImageView来实现这些功能,用起来比较麻烦,我们通常是根据Fresco自己改改,直接使用它的Bitmap层)

 

 

 

RK3588 buildroot 制作的系统增加 docker 支持 RK3588 使用buildroot制作的系统添加 docker 和 docker-compose 的功能 阅读详情

相关推荐

xenomai内核解析--嵌入式实时linux概述

Linux系统作为一个GPOS(通用操作系统)发展至今已经非常成熟可靠了,并且由于遵循GPL协议,开放所有系统源代码,非常易于裁剪。更重要的是,与其他开源的GPOS或RTOS相比,Linux系统支持多种处理器、开发板,提供多种软件开发工具,同时Linux系统对网络和图形界面的支持非常出色。显然,选择Linux操作系统在产品的开发周期和成本控制方面都有巨大优势。 虽然Linux系统功能强大、实用性强...

wsg1100 3699

安卓加载图片四大框架

加载网络图片的框架

RzhenDwo的博客 2279

XR Interaction Toolkit实战:为HTC Vive Cosmos打造抓取、投掷与UI交互(Unity 2023教程)

本文详细介绍了如何使用Unity 2023和XR Interaction Toolkit为HTC Vive Cosmos开发抓取、投掷与UI交互系统。通过实战案例'VR投掷训练室',从基础配置到高级功能实现,涵盖物理抓取、精准投掷机制和VR UI交互设计,帮助开发者提升VR交互开发技能。

weixin_30562507的博客 255

Android之Glide图片框架分析

确定为GIF动图后,会构建一个GIF的解码器,它可以从GIF动图中读取每一帧的数据并转换为Bitmap,然后使用Canvas将Bitmap绘制到ImageView上,下一帧则利用Handler发送 一个延迟消息实现连续播放,所有Bitmap绘制完成后又会重新循环,所以就实现了加载GIF动图的效果。EngineJob内部维护了线程池,用来管理资源加载,当资源加载完毕的时候通知回调;很明显,这是加载图片之后的事情,通过EngineJob开启线程池去加载图片,取到数据之后,会回调到主线程,把图片存到弱引用。

ChenYiRan123456的博客 2021

从理论到实践:Zemax驱动下的离轴三反光学系统全流程构建

本文详细阐述了从理论推导到软件实现的离轴三反光学系统全流程设计方法。文章首先分析了离轴三反系统在空间遥感等领域的优势,然后手把手指导如何基于像差理论计算共轴三反的初始结构参数,包括曲率半径与圆锥系数。最后,重点介绍了在Zemax中完成从共轴建模、视场离轴设置到优化与性能评估的完整实战步骤,为光学工程师提供了宝贵的经验与避坑指南。

weixin_29205061的博客 238

华为AR3260路由器NAT回流配置实战:从WEB界面到命令行的完整避坑指南

本文详细解析了华为AR3260路由器NAT回流(Hairpin NAT)的配置原理与实战方法。针对内网用户无法通过公网地址访问内部服务器的常见问题,文章不仅剖析了WEB界面配置的常见报错原因,更提供了清晰、可靠且一劳永逸的命令行(CLI)配置方案与排错指南,帮助企业网络工程师彻底解决内外网访问不一致的难题。

u6v7w8x的博客 874

Android——GT.Glide 加载图片框架,重磅来袭!!!

目前最新版GT库,是支持加载 圆角动态图的,

GSLS 1592

GOM引擎单机传奇架设全攻略——从DBC2000配置到登录器生成

本文详细解析了使用GOM引擎架设单机传奇的完整流程,从DBC2000的安装配置、服务端部署、引擎控制器设置,到登录器生成与客户端补丁放置。文章重点解决了单机架设中的常见问题,如数据库路径配置、IP地址设置及Key.lic文件处理,旨在帮助玩家快速搭建稳定的个人游戏环境,体验GM乐趣。

weixin_28318011的博客 629

Android图片加载框架

目前图片加载框架也是繁多,目前常用的有以下几种:ImageLoader(2011年),Picasso(2013年),Glide(2012年),Fresco(2015年)四种。其中ImageLoader出现的最早也应用的最为广泛。早期出现的ImageLoader首要关注的是如何尽快的加载图片,然后需要自己动手处理图片防止内存溢出。后面,大家觉得很烦啊,于是一些即注重加载速度,又减少内存溢出的网络加载框

ch847808805的专栏 547

在ROS中使用行为树

在ROS中使用行为树 我提供的工程示例文件: demo链接 文章目录在ROS中使用行为树0、 学习本教程的前提1、 behaviorTree 库安装(ROS使用下的安装方式)2、 处理 behaviortree 库并准备好 service 和 ros action2.1 对ROS 的 service 和 action 进行封装,使其在 behaviortree 上使用更加方便。2.2 创建一个 service 和一个 action2.3 创建与决策树相关的数据类型2.4 修改`package.xml`文件2

qq_37416258的博客 6376

PCB仿真软件:Altium Designer_(6).PCB布线设计:自动布线与手工布线

通过以上步骤,我们完成了一个简单的PCB设计案例。在这个过程中,我们使用了自动布线和手工布线的综合策略,确保布线质量符合设计要求。创建PCB项目:在Altium Designer中创建一个新的PCB项目。导入原理图:将原理图文件导入到PCB项目中。设置布线规则:通过设置必要的布线规则,如线宽、间距等。启动自动布线:使用自动布线器进行初步布线。手工优化布线:通过手工布线工具优化关键信号的布线路径。保存和导出PCB文件:保存PCB文件并导出Gerber文件,用于生产。

kkchenjj的博客 2522

Android图片加载框架比较

做android的同学肯定都使用过imageloader这款图片加载框架。 图片加载对于中低级的安卓开发人员来说是相当不容易的,因为图片加载时做容易造成安卓内存溢出的原因,而要解决这些问题还需要很多相关知识: 1、多线程下载,线程管理。 2、多级缓存架构设计和策略,内存缓存,磁盘缓存,缓存有效性处理。 3、图片压缩,特效处理,动画处理。 4、复杂网络情况下下载图片策略,例如弱网络等。

一航jason 764

YOLOv11缝合添加注意力机制:添加YOLO-Face的SEAM到并行通道空间注意力机制【附代码】

在目标检测的实际应用中,物体遮挡是一个严重影响检测精度的难点。本文将基于YOLOv11架构,探索融合YOLO-Face中提出的SEAM注意力机制以提升对遮挡物体的感知能力,并在此基础上提出一种轻量化双路径并行注意力机制C2PSA,进一步提升检测性能。

一键难忘的博客 1527

Android常用网络图片加载框架示例

Picasso: Github地址:https://github.com/square/picasso, 最新版本是2.71828,在AndroidStudio中gradle文件中配置: compile 'com.squareup.picasso:picasso:2.71828' 使用: /** * 除了网络url,其它几种需要加上对应前缀,file文件路径前缀:file:...

true100的专栏 1766

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Android常用框架--图片加载系列框架

一、Glide 二、Picasso 三、Fresco 四、Universal-Image-Loader 总结

SiwenYY的博客 651

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

android glide支持的格式,Glide-Android最常用的图片加载框架

一、概述Glide目前在Android的开发中非常的受欢迎,几乎是随便开一个项目都会想到使用glide当图片加载框架。有兴趣可以阅读下Glide源码。在附上Glide官方使用文档: https://muyangmin.github.io/glide-docs-cn/doc/options.html1.主要特点(1)支持Memory和Disk图片缓存。(2)支持gif和webp格式图片。(3)根据A...

weixin_36341727的博客 1250

一些安卓开源框架整理

一些安卓开源框架整理 http://blog.youkuaiyun.com/lhc1105/article/details/48876935 1、volley  项目地址 https://github.com/smanikandan14/Volley-demo  (1)  JSON,图像等的异步下载;  (2)  网络请求的排序(scheduling)  (3)  网络

zdy0_2004的专栏 448

android 高级之旅 (三 )picasso、glide、imageloader等几个常用的图片加载框架

现在网络上的图片加载库已经多如牛毛了,所以选择一个适合自己的图片加载库是非常有助于项目开发的。 现在几个被用的比较多的库有:UIL,Picasso,  Glide,   ImageLoader,   Volley  和  Fresco。 如下简介: Universal Image Loader:一个强大的图片加载库,包含各种各样的配置,最老牌,使用也最广泛。只可惜作者已经

lixuSpace001的博客 636

Android常用框架

1.缓存框架     1.1DiskLruCache:Java实现基于LRU的磁盘缓存,DiskLruCache不是google官方所写,但是得到了官方推荐,DiskLruCache没有编写到SDK中去,如需使用可直接copy这个类到项目中去。使用场景:如“清除缓存”,DiskLruCache一句话就可以搞定! github https://github....

weixin_44702125的博客 3万+

Android万能的图片加载框架(Glide、Fresco、Picasso)

做安卓开发中加载图片是一个很常用的功能,但是如果没写好的话,很容易产生OOM,这里介绍几个好用的开源的图片加载框架。 第一个是Glide,Glide一般是配合PhotoView来使用的,轻松实现图片放大、缩小和双击放大等功能。具体的用法我就不再重复写了,这里推荐几个博客,写得很详细,看完就明白了。 http://mrfu.me/2016/02/27/Glide_Getting_Started/

从事移动开发八年,csdn博客专家,阿里云特邀专家,华为云云享专家,高级网络信息安全工程师,大数据工程师(高级),python技术开发(高级),HarmonyOS 应用开发者高级认证,现在某学校任教。 8065

Android的常用框架

1. 前言 每种编程语言都有其相应的框架,而Android也不例外;那么Android的框架到底有多少种,且其框架相应的特点与构成又是如何的呢?接下来,就让我们一起去学习一下Android的一些常用框架。 2. Android常用框架的构成图 我把我目前所知晓得的一些Android常用的框架以构成图的形式进行展示,从而使Android的常用框架可以更加清晰明了的展现出来,构成图如下: 3. Android常用框架 通过以上的Android常用框架的构成图,我们可以晓得本篇博文主要对这七个常用框架进行相应的

fjnu_se的博客 543

图片加载框架之图片加载框架选型(一)下篇

/预加载一张图片//同步加载一张图片,注意只能在子线程中调用并且Bitmap不会被缓存到内存里.@Overridetry {}.start();//加载一张图片旋转并且添加一个Transformation,可以对图片进行各种变化处理,例如圆形头像.@Override//处理Bitmap@Override。

onghaha的博客 706

安卓多媒体开发:图片加载框架 Glide 与 Picasso 全面解析

在移动应用开发中,图片加载是核心功能之一。无论是社交应用的头像展示、电商应用的商品图片,还是新闻应用的配图,都需要高效、稳定的图片加载方案。Android 系统原生的图片加载方式存在诸多痛点(如 OOM、缓存管理复杂等),因此开发者通常会选择成熟的第三方框架。本文将详细对比当前主流的两个图片加载框架 ——Glide 和 Picasso,分析它们的核心特性、使用方法、性能差异及适用场景。Android 原生通过或加载图片时,存在以下问题:Glide 和 Picasso 作为主流图片加载框架,解决了上述问题:G

2501_93564530的博客 1297

Android图片加载框架介绍

在Android开发中,图片绝对是个然不开的话题,那么在图片的加载展示和davik内存的管理上,我们的管理策略就显得格外重要,稍不严谨就会出现OOM。图片的加载包括图片的缓存、图片的处理、图片的显示等,而通常大家都会使用三方框架,第三方框架的使用较为方便,这大大的减少了工作量、提高了开发效率, 大部分框架其实都差不多,配置稍微麻烦点,但是使用时一般只需要一行,显示方法一般会提供多个重载方法,支持不同

尹人入胜的博客 636

(十五)安卓JSON解析与图片加载框架Glide

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于网络通信和数据存储。在安卓应用中,JSON解析是实现与服务器通信和数据处理的重要部分。本文将介绍JSON的基础知识、在安卓平台上的解析方法、常见的解析库以及一些实践示例,帮助你全面掌握安卓JSON解析技术。JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。使用和接口,自定义对象的序列化和反序列化过程。掌握JSON解析技术是开发高效安卓应用的关键。

小新的博客 1031

Android开发三种第三方图片加载的框架

最近在项目中用到了大量图片加载,第三方优秀框架还不错,下面介绍三款榜首的框架用法和问题,做一个记录。 现在项目使用的是Android Studio开发的,现在也没有多少人使用Eclipse了吧。 一、Picasso    1,首先在项目中引入picasso(以gradle为例),也就是app的build.gradle      compile 'com.squareup....

ddbnfh3092的博客 359
上一篇: Kotlin NotImplementedError
下一篇: Android WebView与JS交互
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值