首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android-图片压缩(二)-纯干货

双线性采样对比邻近采样优势在于: 4、微信和鲁班压缩对比 1、图片相关概念 1.1 ARGB介绍 ARGB颜色模型:最常见颜色模型,设备相关,四种通道,取值均为[0,255],即转化成二进制位0000...它将图片内容看做是由存储数据有限个像素点组成;每个像素点存储该像素点位置ARGB。每个像素点ARGB确定下来,这张图片内容就相应地确定下来了。...质量压缩 采样率压缩 缩放压缩 减少图片像素,缩略图 JNI调用JPEG库 Android目前常用图片格式有png,jpeg和webp, png:无损压缩图片格式,支持Alpha...AndroidBitmap所占内存大小计算方式:图片长度 x 图片宽度 x 一个像素点占用字节数 3、压缩常见方式 质量压缩:降低存储体积(不改变内存Bitmap大小) 采样压缩...) 双线性采样(Bilinear Resampling)在 Android 使用方式一般有两种: Bitmap bitmap = BitmapFactory.decodeFile("xxx.png"

92620

Bitmap图片压缩,大图加载防止OOM

32位和24位能表示颜色一样多,多一个了透明度。 Android Bitmap使用三种颜色格式:ALPHA_8–每个像素占1个字节,存储透明度信息,没有颜色信息。...ARGB_8888--每个像素占4个字节存储颜色信息,A R G B各一个字节,能表示2^24种颜色,还有一个字节存储透明度信息。...内存如果加载一张 500*500 png 高清图片.应该是占用多少内存? png 图片应该有alpha通道,所以 Bitmap.Config 是 ARGB_8888 。...0 压缩100%,100意味着不压缩; OutputStream stream) ;//写入压缩数据输出流; Bitmap.CompressFormat.PNG ,那不管第二个如何变化,图片大小都不会变化...将此图片加载到内存需使用 0.75MB,而不是完整图片所需 12MB(假设位图配置为 ARGB_8888)。

2.6K00
您找到你想要的搜索结果了吗?
是的
没有找到

Bitmap图片压缩,大图加载防止OOM

在这里插入图片描述 前言 Android官网处理位图 和 高效加载大型位图 这两篇文章已经做了很明确指出了如何高效加载大图。...32位和24位能表示颜色一样多,多一个了透明度。 Android Bitmap使用三种颜色格式: ALPHA_8–每个像素占1个字节,存储透明度信息,没有颜色信息。...ARGB_8888--每个像素占4个字节存储颜色信息,A R G B各一个字节,能表示2^24种颜色,还有一个字节存储透明度信息。...内存如果加载一张 500*500 png 高清图片.应该是占用多少内存? png 图片应该有alpha通道,所以 Bitmap.Config 是 ARGB_8888 。...将此图片加载到内存需使用 0.75MB,而不是完整图片所需 12MB(假设位图配置为 ARGB_8888)。

1.9K20

详解Bitmap之ARGB_8888RGB_565ALPHA_8ARGB_4444

ALPHA_8:根据注释应该是不保存颜色,只保存透明度(8位),每个像素会占用8位。 内存大小 那么对bitmap有何影响? 这里都以ARGB_8888为基准来进行对比。.... **/ @Deprecated ARGB_4444 (4), 原来在KITKAT,即Android 19之后,这个参数就彻底无效了,只用这个参数会被默认替换为ARGB_8888,所以内存大小没有变化...= Bitmap.Config.ARGB_8888; 翻译过来就是如果inPreferredConfig不为null,那么解码器回尝试使用此参数指定颜色模式来对图片进行解码,如果解码时发现不能满足这个模式...,那么解码器回根据原图特征及当前设备屏幕位深,自动选择合适颜色模式来解码。...另外根据上面的描述,RGB_565也可能无效,比如讲图片换成下面这个 https://pngimg.com/uploads/cocktail/cocktail_PNG51.png 总结 由于ARGB_4444

3K30

详解Android Bitmap常用压缩方式

Android图片是以Bitmap方式存在,绘制时候也是Bitmap,直接影响到app运行时内存,在Android,Bitmap所占用内存计算公式是:图片长度 x 图片宽度 x像素点字节数...二、图片常用压缩格式 Enum Values ALPHA_8 每个像素都存储为一个半透明(alpha)通道 ARGB_4444 此字段已在API级别13弃用。...RGB_565 每个像素存储在2个字节,只有RGB通道被编码:红色以5位精度存储(32个可能),绿色以6位精度存储(64个可能),蓝色存储为5位精确。...其中字母代表意思我们大概都可以理解,接下来我们来算算它们单个像素点字节数: ALPHA_8:表示8位Alpha位图,即透明度占8个位,一个像素点占用1个字节,它没有颜色,只有透明度。...我们可以看到有个参数:quality,可以调节你压缩比例,但是还要注意一点就是,质量压缩堆png格式这种图片没有作用,因为png是无损压缩。

97810

Android开发基础系列】图片专题

Android图片是以bitmap形式存在,那么bitmap所占内存,直接影响到了应用所占内存大小,首先要知道bitmap所占内存大小计算方式:         图片长度x图片宽度...ALPHA_8表示8位Alpha位图,即A=8,一个像素点占用1个字节,它没有颜色,只有透明度;     ARGB_4444表示16位ARGB位图,即A=4,R=4,G=4,B=4,一个像素点占4+4+...这里要说,如果是bit.compress(CompressFormat.PNG,quality, baos);这样png格式,quality就没有作用了,bytes.length不会变化,因为png图片是无损...bitmap来说。...如果将这些压缩后bitmap另存为sd,他们内存大小并不一样。         android手机,图片所占内存大小和很多因素相关,计算起来也很麻烦。

15620

高性能图片优化方案

它将图片内容看做是由存储数据有限个像素点组成;每个像素点存储该像素点位置ARGB。每个像素点ARGB确定下来,这张图片内容就相应地确定下来了。Bitmap本质上不能直接存储为什么?...4.2 ARGB色彩模式在 Android ,我们常见一些颜色设置,都是 RGB 色彩模式来描述像素颜色,并且他们都带有透明度通道,也就是所谓 ARGB。...例如,我们常见颜色定义如下://在代码定义颜色:蓝色public final int blue=0xff0000ff;//或者在xml定义:#ff0000ff... ```以上设置颜色都是使用 16 进制数字来表示。...以上颜色都是带有透明度(透明通道)颜色,格式是 AARRGGBB,透明度、红色、绿色、蓝色四个颜色通道,各占有 2 位,也就是一个颜色通道,使用了 1 个字节来存储。

76830

bitmap六种压缩方式,图片压缩

转载自:http://blog.csdn.net/harryweasley/article/details/51955467 android图片是以bitmap形式存在,那么bitmap所占内存,直接影响到了应用所占内存大小...ALPHA_8 表示8位Alpha位图,即A=8,一个像素点占用1个字节,它没有颜色,只有透明度 ARGB_4444 表示16位ARGB位图,即A=4,R=4,G=4,B=4,一个像素点占4...这里要说,如果是bit.compress(CompressFormat.PNG, quality, baos);这样png格式,quality就没有作用了,bytes.length不会变化,因为png...总结 以上就是5种图片压缩方法,这里需要强调,他们压缩仅仅只是对androidbitmap来说。如果将这些压缩后bitmap另存为sd,他们内存大小并不一样。...android手机,图片所占内存大小和很多因素相关,计算起来也很麻烦。

2.7K20

Android高效内存之让你图片省内存

android.util.DisplayMetrics类density变量,是一个float,关于屏幕密度更多内容本文不做介绍。...在Android还有包含透明度Alpha颜色模型,即ARGB。 ?...2.5.2 RGB在计算机颜色数字化编码   在不考虑透明度情况下,一个像素点颜色在计算机表示方法有以下3种: 浮点数编码:比如float: (1.0, 0.5, 0.75),每个颜色分量各占...5位表示(剩下1位不用) ARGB8888(int):A、R、G、B分量各占8位 ARGB4444(short):A、R、G、B分量各占4位   在AndroidBitmap.Config类,有ARGB...在Android系统默认使用编码格式是ARGB_8888,所以在文章开头计算图片内存大小时候每个像素占用内存大小是4byte,比如采用ARGB_8888编码载入一张1920*1200图片,大概就会占用

1.2K111

Android-Bitmap

所以,一张 png 或者 jpg 格式图片大小,跟这张图片加载进内存所占用大小完全是两回事。但图片在内存大小和Bitmap大小相同 1.2.问题二: 如何计算图片在内存大小?...ARGB_8888其含义是:ARGB分别代表是透明度(alpha),红色(red),绿色(green),蓝色(blue),8888表示A=8,R=8,G=8,B=8即每个分别用8bit来记录并进行存储...ARGB_4444其含义是:ARGB分别代表是透明度,红色,绿色,蓝色,4444表示每个分别用4bit来记录并进行存储,计算如下: 单位像素ARGB_4444占位计算:4+4+4+4 =16bit...ALPHA_8含义:ALPHA代表该像素只保存透明度,所以其每单位像素计算公式为: 单位像素ALPHA_8占位计算为8bit等于1byte内存 Android图片有四种颜色格式 ?...我们都知道在Android3.0以前Bitmap是存放在内存,我们需要回收native层和Java层内存,在Android3.0以后Bitmap是存放在堆,我们只要回收堆内存即可,官方建议我们

1.4K20

Android 性能优化——之图片优化

Android 性能优化——之图片优化  在Android性能优化,我们会发现占内存最大和对性能影响最大往往是图片资源,其次是控件资源。相对来说,其他资源影响会小一点。...=true; 8 //通过编辑,得到边界,并存入到option 9 BitmapFactory.decodeFile(filePath2,options); 10...网络就是访问网络下载图片,进行图片加载。   3、常见png,JPG,webp等格式图片在设置到UI上之前需要经过解码过程,而图片采用不同码率,也会造成对内存占用不同。...共16bites,即2个字节     3)ARGB_8888 格式解码率,一个像素占用4个字节,alpha(A),Red(R),Green(G),Blue(B)各占8个bites , 共32bites...对于半透明颜色图片来说,该格式图片能够达到比较好呈现效果,相对于ARGB_8888来说也能减少一半内存开销,因此它是一  个不错选择。

76710

Android 内存优化】Bitmap 图像尺寸缩小 ( 设置 Options 参数 | inJustDecodeBounds | inSampleSize | 工具类实现 )

Bitmap 对象为 null ; ③ 解码选项 : BitmapFactory.Options outXxx 字段会被设置对应图片属性 ; ④ 解码选项参数示例 : 如 : outWidth...与 BitmapFactory 配合使用 : ① Android 4.4 以后复用机制 : 在 KITKAT 以后代码 , 只要被解码生成 Bitmap 对象字节大小 ( 缩放后 ) , 小于等于...inBitmap 字节大小 , 就可以复用成功 ; ② Android 4.4 之前复用机制 : 在 KITKAT ( Android 4.4 系统 , android-19 平台 ) 之前代码..., 该最终要设置到 BitmapFactory.Options 对象 */ int inSampleSize = 1; // 1....在 KITKAT 之前代码 , 被解码图像必须是 JPEG 或 PNG 格式 , 并且 图像大小必须是相等 , inssampleSize

2.7K20

Android粒子篇之Bitmap像素级操作

称为一个像素(px),而且一个小格子是一种颜色 也就是一张jpg或png图片就是很多颜色合集,而这些合集信息都被封装到了Bitmap类 你可以使用Bitmap获取任意像素点,并修改它,对与某像素点而言...第一点.png ---- 3.获取所有点像素颜色 这里i代表列数,j代表行数,mColArr[i][j]代表是一个图片第i列,第j行像素颜色 Bitmap bitmap = BitmapFactory.decodeResource...Color类中有几个方法可以方便获取argb分别对应,下面测试一下你就明白了 其实就是将int进行了位运算,分离出argb四个通道 printColor("pixel_0_0", pixel...原图复刻图片资源.png ---- 5.圆形复刻 这里4图片已经不是bitmap了,而是由一个个小正方形堆积成东西,这些小正方形拥有自己颜色 然而我们可以利用它实现一些好玩东西,比如不画正方形...: 在Color篇详细介绍了使用ColorFilter和ColorMatrix改变图片颜色 这里既然拿到了小球颜色,那么统一改变一下小球颜色则何如?

1.7K40

Android关于Color你所知道和不知道一切

人类只能模拟 16位是2个字节代表一种颜色,每种颜色有0~65535共65536颜色, 三色共表达:65536*65536*65536=279213318656种颜色 2.ARGB:设备相关颜色模型...看到就能想到大概颜色 颜色有三个维度属性:色相、明度和饱和度 HSV模型对应于: 圆柱坐标系一个圆锥形子集,圆锥顶面对应于V=1。...在HSV颜色模型,每一种颜色和它补色相差180°。饱和度S取值从0到1,所以圆锥顶面的半径为1。 ? hsv.png 5.看一下黄色几种表达方式: ?...---- 一、AndroidColor 颜色使用场景: 1.基本使用:背景、阴影、文字颜色 2.基于Color创建Bitmap以及叠合模式:Xfermode 3.paint着色、...,毕竟就是一个int而已,难点在于颜色拼合与变换 二、Android位图封装类:Bitmap 什么是位图,前面讲过颜色是按位存储,ARGB_8888每种颜色占8位 相信大家都知道一张jpg或

2.6K40
领券