zoukankan      html  css  js  c++  java
  • 图片处理之-Bitmap.Config,jpeg压缩与大小

    关于ARGB_8888、ALPHA_8、ARGB_4444、RGB_565的理解

    A:透明度

    R:红色

    G:绿

    B:蓝

    Bitmap.Config ARGB_4444:每个像素占四位,即A=4,R=4,G=4,B=4,那么一个像素点占4+4+4+4=16位 

    Bitmap.Config ARGB_8888:每个像素占四位,即A=8,R=8,G=8,B=8,那么一个像素点占8+8+8+8=32位

    Bitmap.Config RGB_565:每个像素占四位,即R=5,G=6,B=5,没有透明度,那么一个像素点占5+6+5=16位

    Bitmap.Config ALPHA_8:每个像素占四位,只有透明度,没有颜色。

    一般情况下我们都是使用的ARGB_8888,由此可知它是最占内存的,因为一个像素占32位,8位=1字节,所以一个像素占4字节的内存。假设有一张480x800的图片,如果格式为ARGB_8888,那么将会占用480x800x4/1024=1525KB的内存。

    对于jpeg,图片压缩成此种格式的时候有压缩比率,压缩比率通常在10:1到40:1之间,压缩比越大,品质就越低;相反地,压缩比越小,品质就越好。比如可以把1.37Mb的BMP位图文件压缩至20.3KB。

    其实由于jpeg格式是有损压缩格式,因此同样大小的图片,就算参数完全相同的情况下,保存后的大小也是有很大差异的,因此只能估算最大值和最小值,无法在没有实际输入的情况下算出输出大小。

    而在估算时,起到主要影响因素的包括以下几点(可能不全,但一般够用了):

    1. 图片像素尺寸

    2. 色彩数——影响解压后的每像素字节数

    3. 品质——分11级,0时图片变化最明显,体积也最小,这个主要影响压缩率;

      8级一般是比较推荐的等级,不对比的情况下基本看不出质量损失

      有些软件用百分比形式映射,有些软件从1开始因此最大是12

    4. 色彩分布——这个对压缩的影响很大,是接近估值最小值还是估值最大值几乎都受他影响,是造成没有准确值只有估值的最大变数

    5. 至于基线、差值、是否连续等优化,对最终体积是有影响,但相比于品质的压缩率在图片不是特别小的情况下影响可以忽略

    说完这些简单的理论,接着说说怎么估算和误差大小。

      1. 首先是用图片像素尺寸和色彩数,我们能算出图片在内存中的体积

        Size=Width * Height * 每像素字节数

        这里每像素字节数很好理解,不懂可以百度,这里给几个常用的,照片一般是第一个:
        RGB(888) - 3字节,RGB(565) - 2字节,256色 - 1字节,16色-1/2字节,黑白-1/8字节

      2. 之后就是依据品质和图片大小推测压缩率范围

        这个比较复杂,只能经验性估值,这里只介绍影像压缩率的几个变量:

        a. 图片越小压缩率越小,并逐渐趋向当前质量的最小压缩率,
            图片越大压缩率越大,并逐渐趋于当前质量的最大压缩率,

            图片非常小时有可能比1还小;

        b. 品质越低压缩率越高,0级时一般会在200:1到30:1间浮动,大多集中在60:1附近

                                                8级时一般会在40:1到4:1间浮动,大多集中在16:1

                                              11级时一般会在16:1到2:1间浮动,大多集中在7:1附近

        c. 色彩分布越趋向于单色、连续颜色、重复色块时压缩比越高,极端时(比如纯白的图),就算图片很大,图片也只会有几百字节到几十K字节。

        3. 因此文件大小的范围就是前一步得到的 size * 估算的压缩率范围

  • 相关阅读:
    在Power BI报表和仪表板中显示刷新日期时间
    微软Power BI 每月功能更新系列——12月Power BI 新功能学习
    在Microsoft Power BI中创建地图的10种方法
    您应该将报表从Excel转换为Power BI的8个原因
    OBS录制全屏游戏的方法(超好录屏)
    关于Adobe Premiere Pro视音频不同步的解决方法
    Npcap:Nmap项目里一个为Windows而生的嗅探库 Npcap: Nmap Project's packet sniffing library for Windows
    关于被malloc分配内存的指针
    VS2017 高级使用方法
    Npcap环境配置(Winpcap后继者) pcap的一种
  • 原文地址:https://www.cnblogs.com/permanent2012moira/p/5036760.html
Copyright © 2011-2022 走看看