首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Android 一起来看看知乎开源的图片选择库

:matisse:0.4.3' } 有一点要注意一下, 这个图片选择库是使用 Glide 或 Picasso 作为图片加载引擎 如果你使用 Glide 作为你的图片加载引擎,请添加 Glide 的 README...上所说的规则,以及添加额外的规则: -dontwarn com.squareup.picasso.** 如果你使用 Picasso 作为你的图片加载引擎,请添加 Picasso 的 README 上所说的规则...Matisse 中,而且你并不能通过以下方法来限制可选择的 mime 类型: MimeType.ofAll() MimeType.of(MimeType type, MimeType... rest)...自动增长的数目 使用 countable(true) 来显示一个从 1 开始的数字 最大的数字数量 使用 maxSelectable(int maxSelectable) 来限制可选择的最大数目...方向 ---- 使用 restrictOrientation*(@ScreenOrientation int orientation) 来设置图像选择和预览活动所需的方向。

1.6K30

拆 JakeWharton 系列之 Picasso

2 你将收获 通过本文和 Picasso 源码,你将收获: 图片框架的实现套路 缓存策略的应用 熟悉 HandlerThread 的应用场景 3 Picasso 总览 简介 Picasso 、Glide...Transformation:图像的变换接口,如果需要对图片进行范围裁切或几何变换均可实现该接口进行自定义,也可参考 picasso-transformations 。...Picasso 内置了图片下载器 OkHttp3Downloader,本质上是使用自家的 OkHttp 进行图片下载,并内置了缓存策略 DiskLruCache,默认可缓存的文件大小总数为 50M 。...使用 ContentProvider 提供 Context对象供 Picasso 单例使用,此版本尚未发布,从 master 中可以看到此代码: ?...这小技巧可以扩展我们提供 api 的思路,如果不需要特定的 Context,则可以通过 ContentProvider 来提供,方便使用。 该库的单元测试行覆盖率也高达 72% 。

52920

【Android从零单排系列九】《Android视图控件——ImageView》

他提供了大量的配置选项和良好的控制图像加载和缓存过程。...Picasso:和Square的网络库一起能发挥最大作用,因为Picasso可以选择将网络请求的缓存部分交给了okhttp实现 Glide:模仿了Picasso的API,而且在他的基础上加了很多的扩展(...2.图片框架ImageLoader,Picasso,Fresco,Glide对比 ImageLoader 比较老的框架,稳定,加载速度适中,缺点在于不支持GIF图片加载,使用稍微繁琐,并且缓存机制没有和...http的缓存很好的结合,完全是自己的一套缓存机制 Picasso 使用方便,一行代码完成加载图片显示,框架体积小 缺点在于不支持GIF,并且他可能是想让服务器去处理图片的缩放,他缓存的图片是未缩放的,...并且默认使用ARGB_8888格式缓存图片,缓存体积大 Glide 支持GIF图片的加载,图片缓存也会自动缩放,默认使用RGB_565格式缓存图片,是Picasso缓存体积的一半 Fresco 优点:

1.2K30

一日一技:限制你的Python程序所能使用最大内存

为了限制Python程序所能使用最大内存,我们可以使用Python自带的 resource模块。...而 soft限制是一个可以调节的内存使用上限, hard是一个一旦设定就很难动态调整的内存使用量上限。 在我的电脑上运行效果如下图所示: ? 一开始 soft和 hard的值是一样的。...接下来,设置当前运行的这个Python程序能够使用最大内存: resource.setrlimit(resource.RLIMIT_AS, (最大上限, hard)) 其中最大上限是一个整数。...假设我想限制当前程序最多可以使用500MB的内存,那么这里的最大上限可以设置为: 0.5 * 1024 ^ 6 = 576460752303423488 所以设置为: resource.setrlimit...(resource.RLIMIT_AS, (576460752303423488, hard)) 那么当前Python程序使用的内存超过500MB以后,程序就会抛出 MemoryError。

9.9K41

【译】影响图片缓存行为

回到主题上来:Picasso首先会尝试去内存中加载图像,如果最近没有加载过这张图片,或者这张图片并不存在于内存中,Picasso会去磁盘中检查它的存在。如果磁盘中也不存在,则开启网络请求。...举例来说,可以使用NO_CACHE限制Picasso从内存中加载图片,示例如下: Picasso .with(context) .load(UsageExampleListViewAdapter.eatFoodyImages...[1]) .memoryPolicy(MemoryPolicy.NO_CACHE) .into(imageViewFromDisk); 如果你想知道如何使用NO_STORE这个枚举:比如说...,当前请求的图片,只会被使用一次,那么就应该调用.memoryPolicy(MemoryPolicy.NO_STORE)。...当然,你可以在一个请求上联合使用这些特性: Picasso .with(context) .load(UsageExampleListViewAdapter.eatFoodyImages

55950

Android图片性能优化详解

1.1 JPEG JPEG是一种广泛使用的有损压缩图像标准格式,它不支持透明和多帧动画,一般摄像类作品最终都是以JPEG格式展示。通过控制压缩比,可以调整图片的大小。...1.2 PNG PNG是一种无损压缩图片格式,它支持完整的透明通道,从图像处理领域将,JPEG只有RGB三个通道,而PNG有ARGB四个通道。...在既保证图片质量又要限制图片大小的需求下,WebP应该是首选。 2. 图片的压缩 目前大多数APP都是PNG格式图片资源,我们可以通过几个工具对PNG图片进行压缩来达到瘦身的目的。...根据Google测试,无损压缩后的WebP比PNG文件少了45%的文件大小,即使这些PNG文件经过其他压缩工具例如ImageOptim压缩后,WebP依然可以减少约28%的文件大小。...图片的缓存 图片的缓存框架有很多,常见的有四种 Android-Universal-Image-Loader Picasso Glide Fresco 这四种图片加载框架的优劣就不在一一说明,因为随便一搜就可以知道答案

98220

【译】开始使用,简单加载

有经验的Android开发者可以跳过这段,而对于初学者来说:你一定会问,为什么要使用Picasso来替换目前已有的图像加载方案。...图像处理在Android中应当是非常谨慎的,因为它会把图片一个像素接一个像素的加载到内存中。...如果你使用一个经过良好测试的类库,如Picasso,那么在复杂的网络连接,缓存以及图片处理等操作上,将会节省很多时间,而且也不必为其感到头疼。 在这一系列中,我们将关注Picasso的一些特性。...或者了解一下其他图像加载类库,如Glide,ION等等 添加Picasso 希望截至目前为止,我们已经肯定你使用过一种类库来处理图像的加载。如果你愿意尝试Picasso,这篇指导简直不能更适合你了。...2.5.2 从一个URL地址加载图片 Picasso使用了流式接口的调用方式,Picasso类是核心实现类。

50920

Picasso,Glide,Fresco对比分析

Picasso,Glide,Fresco的前世今生 基本项对比 对比项 Picasso Glide Fresco 地址 https://github.com/square/picasso https:/...缓存图像大小 Glide则会根据ImageView控件尺寸获得对应的大小的bitmap来展示,从而缓存也可以针对不同的对象:原始图像(source),结果图像(result) 缓存原始图像 加载策略 Glide...也就是说,我们不能像上面Glide那样把bitmap 对象取出来传递给其它地方使用, 只能在Fresco提供的作用域范围内使用。...只会缓存原始尺寸的图片,Glide缓存的是多种规格),加载速度快且内存开销小(默认Bitmap格式的不同,使得内存开销是Picasso的一半) Fresco 最大的优势在于5.0以下(最低2.3)的...,而且还要在布局使用SimpleDraweeView控件加载图片。

4.6K20

【译】占位图与渐变效果

如果你使用Picasso,你可能更倾向于通过网络连接来加载图像。依赖于你所处的网络环境,加载过程可能需要大量时间。...其实在大多数场景中,使用一个特殊的占位图来标识那些不能被加载的图像,显然是足够的。 使用方式与前面讲到的设置预加载占位图一样,唯一不同的是我们要调用是.error()函数。...noFade()的运用 无论你是要在加载完成之前展示一个展位图还是其他,Picasso为了让UI视图的改变更加揉和,会使用一个渐变效果将图像添加到ImageView上。...因此它也涵盖着不同的使用场景。 让我们考虑一下这个场景:你想为一个ImageView加载图像,一段时间之后,你又想为这个ImageView加载另一个图像。...当第一个图像加载完成后,立即开始第二个图像加载请求。然而,由于.noPlaceholder()的使用,它在恰当的时机保持了之前的图像不变。

93620

【译】使用标签实现图像加载的分组管理

如果你的视图变化很快,那么对于取消较早的图像加载,已经离开屏幕的,以及为新的视图开启图像加载来说是非常有用的。幸运的是,Picasso提供了.tag()函数,用来实现这些需求。...关于图像加载分组,需要关注以下几点: 使用.pauseTag()暂停请求 使用.resumeTag()恢复请求 使用.cancelTag()取消请求 基本来讲,无论何时,你需要取消或者暂停一个甚至多个图像加载时...然而,由于用户滑动速度太快,Picasso一次又一次的尝试为每个单元条目启动图像加载请求,然后又不得不立刻取消该加载请求。 更有效的方式应该是暂停所有的图像加载,直到停止滚动。...以上示例中的代码,摘自于Picasso官方实例工程。 示例#2:cancelTag() 上面所涉及的ListView代码示例,并没有使用到cancelTag()函数。让我们试想另一个场景。...这篇博客中使用的标签类型是String,但是不局限于此,你完全可以使用任何类型。

1K20

【译】图片尺寸重调整,缩放与自适应

不幸的是,对图像尺寸的要求,不可能完全受控制。如果图像的尺寸很怪异,可以使用.resize(horizontalSize, verticalSize)来改变图像的大小到一个合适的尺寸。...resize()选项时,Picasso可能会放大你的图像。...如果不改善图像质量,而仅仅是将小图放大,是非常浪费计算时间的,可以使用.onlyScaleDown()只对那些当原始图像尺寸大于目标控件尺寸的用例中,这种情况下,Picasso才会对图像进行尺寸重调整。...第一,因为Picasso需要等待目标ImageView的测量完成,所以fit()可能会延迟加载图像。...第二,使用fit()的前提条件是:只能是ImageView作为加载的target(我们将会在随后介绍其他target)。 在不影响图像质量的前提下,应该尽量降低图像的分辨率。

99840

【译】在列表视图中处理空值

第二个则是当ListView使用了未被完整加载的图像,应用程序仍能正确运转的开发者们。...由于ListView中的ImageView是通过系统的调度来实现复用的,所以当用户快速滚动时可能出现图片错乱的现象,而这样做能够有效避免当前Item拿到了先前的图像,而造成图像显示不准确的情况发生。...你不应该使用Picasso去置空ImageView,你应该调用imageView.setImageDrawable(null)。...选项2:显示占位图 另一个选择就是使用占位图来代替空白的ImageView。这种完全取决于你的个人观念和用户体验。 如果你决定使用一个占位图,就应该通过Picasso来实现它。...这样做的好处就不再需要手动调用cancelRequest()了,因为Picasso会为即将到来的ImageView仅自动的加载一次图像

1.2K30

Carson带你学Android:最全面解析图片加载库Glide用法

//如果原始图像有 1000x1000 像素,那么缩略图将会有 100x100 像素。...,原图是 400400 ,而使用 Glide 就会缓存 200200 规格的图,而 Picasso 只会缓存 400400 规格的。...,分别是: ALPHA_8:每个像素占用1byte内存 ARGB_4444:每个像素占用2byte内存 ARGB_8888:每个像素占用4byte内存(默认,色彩最细腻=显示质量最高=占用的内存也最大...相比其他图片加载库(Picasso & Fresco) 对比Picasso Glide 是在Picasso 基础之上进行的二次开发做了不少改进,不过这也导致包比 Picasso 大不少,不过也就不到...500k(Picasso 是100多k),用法较为复杂,不过毕竟级别还是蛮小的,影响不是很大 对比Fresco 使用较Fresco简单,但性能(加载速度 & 缓存)却比不上Fresco 6.

79920
领券