Bitmap.Config ARGB_4444 public static final Bitmap.Config ARGB_8888 public static final Bitmap.Config RGB..._565 一看,有点蒙了,ALPHA_8, ARGB_4444,ARGB_8888,RGB_565 到底是什么呢?...所以红绿蓝又称为三原色,每个原色都存储着所表示颜色的信息值 说白了就ALPHA_8就是Alpha由8位组成 ARGB_4444就是由4个4位组成即16位, ARGB_8888就是由4个8位组成即32位, RGB...565就是R为5位,G为6位,B为5位共16位 由此可见: ALPHA_8 代表8位Alpha位图 ARGB_4444 代表16位ARGB位图 ARGB_8888 代表32位ARGB位图 RGB
前言 有时会看到别人使用bitmap是用到ARGB_8888/RGB_565这类参数,那么这些参数是什么?对bitmap有什么影响?...RGB_565:分别用5位、6位和5位来记录RGB三色值,所以每个像素会占用16位。 ALPHA_8:根据注释应该是不保存颜色值,只保存透明度(8位),每个像素会占用8位。...RGB_565:内存占用减少一半,舍弃了透明度,同时三色值也有部分损失,但是图片失真度很小。 ALPHA_8:内存占用减少3/4,没有颜色,只有透明度,即黑白。...已废除,而ALPHA_8需要在特殊条件下使用,一般用来做特殊需求的,所以我们大多数是用的还是ARGB_8888和RGB_565。...RGB_565能够在保证图片质量的情况下大大减少内存的开销,是解决oom的一种方法。但是一定要注意RGB_565是没有透明度的,如果图片本身需要保留透明度,那么就不能使用RGB_565。
Bitmap.Config ARGB_4444 public static final Bitmap.Config ARGB_8888 public static final Bitmap.Config RGB..._565 一看,有点蒙了,ALPHA_8, ARGB_4444,ARGB_8888,RGB_565 到底是什么呢?...所以红绿蓝又称为三原色,每个原色都存储着所表示颜色的信息值 说白了就ALPHA_8就是Alpha由8位组成 ARGB_4444就是由4个4位组成即16位, ARGB_8888就是由4个8位组成即32位, RGB...565就是R为5位,G为6位,B为5位共16位 由此可见: ALPHA_8 代表8位Alpha位图 ARGB_4444 代表16位ARGB位图 ARGB_8888 代表32位ARGB位图 RGB...使用RGB_565会比使用ARGB_8888少消耗2倍的内存,很多时候默认是ARGB_8888,所以我们需要主动设置为RGB_565.
常用的纹理格式有:RGB_565, ARGB_4444, ARGB_1555, RGB_888, ARGB_8888等。...当这些文件格式被游戏读入后,需要经过CPU解压成RGB_565,ARGB_4444, ARGB_1555, RGB_888, ARGB_8888等像素格式,才能传送到GPU里使用。...纹理格式如:RGB_565,每个像素占用:5+6+5=16 (bits),共 2 个字节。RGB_888,每个像素占 24 位,3 个字节。ARGB_8888占 32 位,4 个字节。...二、贴图压缩方式 对于一张 512_512 的纹理,RGB_565格式的文件占用 512 KB的容量。...(所谓解压,就是把贴图转换成GPU能识别的纹理格式:RGB_565等。) 随机访问:由于几乎不可能预测纹理像素被访问的顺序,任何纹理压缩算反必须允许对其中的纹理的随机访问。
所以需要采用 RGB_565 的格式来加载图片。计算的方式就是 112 * 131 * 2 = 29344 ,565 刚好是两个字节。...Bitmap.Config.RGB_565; BitmapFactory.decodeStream(context.getAssets().open("android.png"),options); 如果将 png 的图片使用 RGB...减少每个像素点的大小 使用 RGB_565 来加载不透明的图片相比与 ARGB_8888 来说占用的内存小了一半,但需要注意的是不能加载带透明通道的图片,除非是透明通道你用不上。...图片占用内存的计算公式 分辨率 * 像素点大小,也就是 长 * 宽 * 像素点大小,像素点大小是根据加载方式来定的,例如 ARGB_8888 占 4 个字节,RGB_565 占 2 个字节。
Bitmap.Config ARGB_4444 public static final Bitmap.Config ARGB_8888 public static final Bitmap.Config RGB...8就是Alpha由8位组成--代表8位Alpha位图 ARGB_4444就是由4个4位组成即16位--代表16位ARGB位图 ARGB_8888就是由4个8位组成即32位--代表32位ARGB位图 RGB...bitmapConfig(Bitmap.Config.RGB_565) //使用RGB_565会比使用ARGB_8888少消耗2倍的内存 imageScaleType(ImageScaleType.IN_SAMPLE_INT
所以,意味着图片的内存大小除了像素大小外,还和加载到内存的格式有关,比如我们将上面的图片换成RGB_565去加载,那么我们得出的内存就应该是:112*131*[(5_6+5)/8] = 112*131*...三、优化图片占用的内存体积 使用inSampleSize对图片进行采样、压缩 使用矩阵变化来改变图片大小 使用RGB_565来加载非透明图片 使用 9-patch图片来做背景图 使用VectorDrawable
RGB_565含义:RGB分别代表的是红色,绿色,蓝色,565表示R=5,G=6,B=5,所以其每单位像素的计算公式为: 单位像素RGB_565占位计算:5+6+5=16bit,等于2byte内存...在实际应用中而言,建议使用ARGB_8888以及RGB_565。 如果你不需要透明度,选择RGB_565,可以减少一半的内存占用.
在那之前它一直默认使用RGB_565。 对客户端使用的大部分图片来说,32位深度、16位深度的显示质量是肉眼较难分辨的,但它们在占用内存上相差了整整一倍。...因此,笔者建议在大部分场景下,使用RGB_565作为加载图片的模式。以下两种场景除外: 1)含透明部分的图片:如果采用RGB_565图片格式来显示图片,是无法正常展现透明区域的。...五、优化策略 在实际的开发中,我们希望中高端机型加载更清晰的图片(ARGB_8888),以提升用户体验,对于低端机型则希望加载占用内存更小的图片(RGB_565),以降低OOM发生的概率。...return if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N || hasLowRam()) { // 低端机型采用RGB
RGB_565 每个像素存储在2个字节中,只有RGB通道被编码:红色以5位精度存储(32个可能值),绿色以6位精度存储(64个可能值),蓝色存储为5位精确。...RGB_565 :表示16位RGB位图,即R=5,G=6,B=5,它没有透明度,一个像素点占5+6+5=16位,2个字节 我们在做压缩处理的时候,可以先通过改变Bitmap的图片格式,来达到压缩的效果,...), R.drawable.test, options); } 这是通过压缩像素占用的内存来达到压缩的效果,一般不建议使用ARGB_4444,因为画质实在是辣鸡,如果对透明度没有要求,建议可以改成RGB
4,B=4,一个像素点占4+4+4+4=16位,2个字节; ARGB_8888表示32位ARGB位图,即A=8,R=8,G=8,B=8,一个像素点占8+8+8+8=32位,4个字节; RGB...1.1.4 RGB_565法 BitmapFactory.Options options2 = new BitmapFactory.Options(); options2.inPreferredConfig...注意:由于ARGB_4444的画质惨不忍睹,一般假如对图片没有透明度要求的话,可以改成RGB_565,相比ARGB_8888将节省一半的内存开销。
被解码的图像必须是 JPEG 或 PNG 格式 , 并且 图像大小必须是相等的 , inssampleSize 设置为 1 , 才能复用成功 , 另外被复用的图像的 像素格式 Config ( 如 RGB...*/ options.inSampleSize = inSampleSize; // 用户设置的是否保留透明度选项 , 如果不保留透明度选项 , 设置像素格式为 RGB...图像大小必须是相等的 , inssampleSize 设置为 1 , 才能复用成功 ; 另外被复用的图像的 像素格式 Config ( 如 RGB...字节 , 计算公式为 5224 \times 2678 \times 4 = 55,959,488 ② 缩小后的图像分析 : 从资源中加载 , 普通情况下宽度 163 像素 , 高度 81 像素 , RGB
例如,ARGB_8888格式每个像素占用4个字节,而RGB_565格式每个像素仅占用2个字节。因此,在不需要透明度的情况下,可以使用低色彩格式来减少Bitmap内存占用。...模式 描述 内存占用 ARGB_8888 每个像素包含8位透明度、8位红色、8位绿色和8位蓝色 4字节 RGB_565 每个像素包含5位红色、6位绿色和5位蓝色 2字节 ALPHA_8 每个像素包含8位透明度
,因为Picasso可以选择将网络请求的缓存部分交给了okhttp实现 Glide:模仿了Picasso的API,而且在他的基础上加了很多的扩展(比如gif等支持),Glide默认的Bitmap格式是RGB...缺点在于不支持GIF,并且他可能是想让服务器去处理图片的缩放,他缓存的图片是未缩放的,并且默认使用ARGB_8888格式缓存图片,缓存体积大 Glide 支持GIF图片的加载,图片缓存也会自动缩放,默认使用RGB
Android中图片有四种颜色格式 颜色格式 每个像素占用内存(单位byte) 每个像素占用内存(单位bit) ALPHA_8 1 8 ARGB_8888(默认) 4 32 ARGB_4444 2 16 RGB...RGB_565:R=5bit,G=6bit,B=5bit,不存在透明度,每个像素会占用2byte,共16bit. ALPHA_8:该像素只保存透明度,会占用1byte,共8bit....在实际应用中而言,建议使用ARGB_8888以及RGB_565。 如果你不需要透明度,那么就选择RGB_565,可以减少一半的内存占用....原图尺寸:4M—-转化为File—Bitmap大小 ALPHA_8———-6.77M ——-45M ARGB_4444——-9.37M ——-22M ARGB_8888——-6.77M ——-45M RGB
默认的Bitmap格式是RGB_565 一下是Picasso和Glide加载后的结果(1920x1080 像素的图片被加载到768x432像素的imageview中): ?...其实是因为Glide的Bitmap默认的格式是RGB_565,而Picasso用的是ARGB_8888,所以虽然质量上不如Picasso(其实在手机上也不明显),但是RGB_565格式的图片仅仅消耗ARGB
,G=4,B=4,一个像素点占4+4+4+4=16位,2个字节 ARGB_8888 表示32位ARGB位图,即A=8,R=8,G=8,B=8,一个像素点占8+8+8+8=32位,4个字节 RGB...注意:由于ARGB_4444的画质惨不忍睹,一般假如对图片没有透明度要求的话,可以改成RGB_565,相比ARGB_8888将节省一半的内存开销。
内存开销小 默认的 Bitmap 格式是 RGB_565 格式,而 Picasso 默认的是 ARGB_8888 格式,这个内存开销要小一半。...: ALPHA_8:每个像素占用1byte内存 ARGB_4444:每个像素占用2byte内存 ARGB_8888:每个像素占用4byte内存(默认,色彩最细腻=显示质量最高=占用的内存也最大) RGB
领取专属 10元无门槛券
手把手带您无忧上云