zoukankan      html  css  js  c++  java
  • 图片及存储选型

    1      图片大小计算

    1.1      图片选择

    像素大小:500px*500px

    支持格式:JPG(JPEG),PNG 

    (在数字成像领域,有两种图像格式优先于其他格式:JPEG(或JPG)和PNG。)

    第三方限制大小:base64:2M

    1.2      BMP原始图片

    直接色、有损、点阵图

     (14+40+(500×3+1)×500)/1024= 732K

    1.3      BMP256真彩色

    索引色、无损、点阵图

    (14 + 50 + 256 × 4 + (500 + 3)× 500)/1024 = 246K

    1.4      PNG无损

    无损、索引色、点阵图

    无法计算大小,图片颜色连续则会缩小较大。

    1.5      PNG有损压缩

    有损、索引色、点阵图

    合并一些颜色后,再进行PNG,所以会有很多颜色变的连续。

    1.6      JPEG/JPG格式

    JPEG是有损的、采用直接色的、点阵图。

    这个算法就比较复杂了。核心步骤如下:

    1、  图像被分割成大小为8X8的小块,这些小块在整个压缩过程中都是单独被处理的。

    2、  颜色空间转换RGB->YCbCr(Y表示亮度(Luminance),Cb和Cr分别表示绿色和红色的“色差值”。)对于人眼来说,图像中明暗的变化更容易被感知到,亮度图的细节更加丰富。JPEG把图像转换为YCbCr之后,就可以针对数据得重要程度的不同做不同的处理。这就是为什么JPEG使用这种颜色空间的原因。

    3、  JPEG算法中的核心内容,离散余弦变换(Discrete cosine transform),简称DCT。在JPEG压缩过程中,经过颜色空间的转换,每一个8X8的图像块,在数据上表现为3个8X8的矩阵,紧接着我们对这三个矩阵做一个二维的DCT转换。

    在实际的JPEG压缩过程中,由于图像本身的连贯性,一个8X8的图像中的数值一般不会出现大的跳跃,经过DCT转换会有类似的效果,左上角的直流分量保存了一个大的数值,其他分量都接近于0。

    经过离散余弦变换,图像数据虽然已经面目全非,但仍然是处于“可逆”的状态,也就是说我们还没有进入“有损”的那一步。

    4、  数据量化。JPEG提供了量子化算法,但太难。量化后,数据就有损了。

    5、  读数组的顺序如下,原因右下都是0,便于出现大量连续的0.

    6、  哈弗曼编码。哈弗曼几乎是所有压缩算法的基础,它的基本原理是根据数据中元素的使用频率,调整元素的编码长度,以得到更高的压缩比。

    7、  JPEG图像压缩优化

    JPEG中使用了量化、哈夫曼编码等,极大的压缩了图片占用的空间,那么是否可以进一步压缩呢?

    从技术角度讲,是可以的。如DropBox开源的lepton,在目前的JPEG压缩基础上,可以再节省22%左右的空间。

    但这个用到的算术编码算法是IBM的专利,JPEG标准不用。

    1.7      JPEG对比PNG

    JPEG:

    可以提高或降低JPEG文件压缩的级别。

    但是,文件大小是以牺牲图像质量为代价的。压缩比率可以高达 100:1。(JPEG 格式可在 10:1 到 20:1 的比率下轻松地压缩文件,而图片质量不会下降。)JPEG压缩可以很好地处理写实摄影作品。但是,对于颜色较少、对比级别强烈、实心边框或纯色区域大的较简单的作品,JPEG压缩无法提供理想的结果。有时,压缩比率会低到 5:1,严重损失了图片完整性。这一损失产生的原因是,JPEG压缩方案可以很好地压缩类似的色调,但是 JPEG 压缩方案不能很好地处理亮度的强烈差异或处理纯色区域。

    JPG格式也叫JPEG格式是数码相机用于储存相片的常用格式,现在也是QQ空间、新闻照片中被广泛使用的图片格式。其特点是色彩还原性好,可以在照片不明显失真的情况下,大幅度压缩图片文件,所以储存体积不是很大。其缺点是不像PNG那样支持图片的透明度。

    PNG:

    可谓是最适合网络的图片!PNG的优点是,清晰,无损压缩,压缩比率很高,可渐变透明,具备几乎所有GIF的优点;缺点是不如JPG的颜色丰富,同样的图片体积也比JPG略大。但是PNG应该在网站设计上被推广,它是公认的最适合网页使用的图片格式。Google就是一个很好的例子。Google所有站点几乎全部的图片资源都是PNG格式。8位的PNG完全可以替代掉GIF。

    大小比较:通常地,PNG ≈ JPG > GIF

    透明性:PNG > GIF > JPG

    色彩丰富程度:JPG > PNG >GIF

    兼容程度:GIF ≈ JPG > PNG

    总结:

    PNG适合屏幕截图,JPEG适合照片,用来表达更生动的图像效果,比如颜色渐变

    而人脸是照片,色彩是渐进的,要求辨识度高,选用JPEG.

    大小差不多。

    2      实测JPEG图片大小

    图中BMP为BMP原始图片,转化为JPEG图片。

    如图所示,BMP转化为JPEG图片后,缩小为原图1/20 – 1/30

    也就是500px*500px的BMP原始图片转化为JPEG后,大小应该为:

           732K / 20 = 36K  --  732K / 30 = 24 K

    平均30K

    人脸图片比一般图片JPEG压缩率更好的原因:更加符合JPEG压缩的设计要求(连续性好)。

    3      人脸图片存储选型

           文件系统比数据库系统的优势是:1、分布式存储容易,2、分散IO读取,提升系统访问速度。但缺点是一致性保证,事务性。所以一般是用于可靠性要求不是那么高,但访问量高的系统,比如博客,淘宝之类的。

    前文已明确,人脸选图片格式为JPEG,500px*500px的JPEG图片大小约为30K。

    1. 存储空间

    USM系统规格为200W人,按人脸业务收敛比1/10,平均每人2张注册图片计算,

    图片总大小为, 2000000/10*2*30/1024/1024=11.4G

                  故就存储而言,放数据库也不算多。

    1. 访问性能

                  在AI网关中,人脸图片基本很少会读取注册时的图片,不存在读图片引起的系统IO性能问题。

           所以当前规格不需要做文件系统,后续如果有新的要求使用文件系统,也可方便切换。

    4      参考

    4.1      PNG文件格式详解

    https://blog.csdn.net/bisword/article/details/2777121

    4.2      PNG 图片压缩对比分析

    https://juejin.im/entry/587f14378d6d810058a18e1f

    4.3      图像分辨率和图像大小的计算

    https://blog.csdn.net/u012372584/article/details/52329731

    4.4      JPEG系列三 JPEG图像压缩

    https://blog.csdn.net/shelldon/article/details/54234433

    4.5      JPEG系列四 JPEG图像压缩优化

    https://blog.csdn.net/shelldon/article/details/54234436

    4.6      JPEG vs. PNG: Which image-saving format is the better one to use?

    https://www.digitaltrends.com/photography/jpeg-vs-png-photo-format/

    4.7      图片格式JPG、GIF、PNG哪个好,该选择谁

    https://www.binarization.com/archive/2016/jpg-gif-png/

    4.8      图片格式 jpg、png、gif各有什么优缺点?什么情况下用什么格式的图片呢?

    https://www.zhihu.com/question/20028452

  • 相关阅读:
    IP地址分类
    HTTP协议基础
    PHP中md5()函数绕过
    支付宝转账
    前端常用小工具
    防抖和节流
    分模块简单使用vuex
    vue-cli 2+antd定制主题
    浅谈Promise
    vue中用js实现文件上传和文件下载
  • 原文地址:https://www.cnblogs.com/aoyihuashao/p/8980543.html
Copyright © 2011-2022 走看看