关于图片存储格式的整理(JPEG格式介绍)

JPG

jpg全名是JPEG 。JPEG 图片以 24 位颜色存储单个光栅图像。JPEG 是与平台无关的格式,支持最高级别的压缩,不过,这种压缩是有损耗的。渐近式 JPEG 文件支持交错。

jpg功能  

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

jpg优缺点

  优点:摄影作品或写实作品支持高级压缩。

  利用可变的压缩比可以控制文件大小。
  支持交错(对于渐近式 JPEG 文件)。
  广泛支持Internet 标准。
  由于体积小,jpg在万维网中被用来储存和传输照片的格式。

  缺点:有损耗压缩会使原始图片数据质量下降。

  当您编辑和重新保存 JPEG 文件时,JPEG 会混合原始图片数据的质量下降。这种下降是累积性的。
  JPEG 不适用于所含颜色很少、具有大块颜色相近的区域或亮度差异十分明显的较简单的图片。jpg使用范围
  jpg格式是一种图片格式,是一种比较常见的图画格式,如果你的图片是其他格式,可以通过以下方法转化:
  1、photoshop ,打开图画以后,按另存为,下面格式那里选择JPG格式就是了,这个方法比较简单,而且适合画质比较好的,要求比较高的图片转换。
  2、如果你要求不高,你直接通过windows附带的图画程序,选择JPG格式就可以,这种转换方式画质不高
  如果JPG格式转其他格式,这样的方法同样适用。

jpg压缩模式

  JPEG (Joint Photographic Experts GROUP)是由国际标准组织(ISO:International Standardization Organization)和国际电话电报咨询委员会(CCITT:Consultation Commitee of the International Telephone and Telegraph)为静态图像所建立的第一个国际数字图像压缩标准,也是至今一直在使用的、应用最广的图像压缩标准。JPEG由于可以提供有损压缩,因此压缩比可以达到其他传统压缩算法无法比拟的程度。
  JPEG的压缩模式有以下几种:
  顺序式编码(Sequential Encoding)
  一次将图像由左到右、由上到下顺序处理。
  递增式编码(Progressive Encoding)
  当图像传输的时间较长时,可将图像分数次处理,以从模糊到清晰的方式来传送图像(效果类似GIF在网络上的传输)。
  无失真编码(Lossless Encoding)
  阶梯式编码(Hierarchical Encoding)
  图像以数种分辨率来压缩,其目的是为了让具有高分辨率的图像也可以在较低分辨率的设备上显示。

jpg压缩步骤

  由于JPEG的无损压缩方式并不比其他的压缩方法更优秀,因此我们着重来看它的有损压缩。以一幅24位彩色图像为例,JPEG的压缩步骤分为:

  1.颜色转换  

  由于JPEG只支持YUV颜色模式的数据结构,而不支持RGB图像数据结构,所以在将彩色图像进行压缩之前,必须先对颜色模式进行数据转换。各个值的转换可以通过下面的转换公式计算得出:
  Y=0.299R+0.587G+0.114B
  U=-0.169R-0.3313G+0.5B
  V=0.5R-0.4187G-0.0813B
  其中,Y表示亮度,U和V表示颜色。

  转换完成之后还需要进行数据采样。一般采用的采样比例是4:1:1或4:2:2。由于在执行了此项工作之后,每两行数据只保留一行,因此,采样后图像数据量将压缩为原来的一半。

  2.DCT变换

  DCT(Discrete Consine Transform)是将图像信号在频率域上进行变换,分离出高频和低频信息的处理过程。然后再对图像的高频部分(即图像细节)进行压缩,以达到压缩图像数据的目的。
  首先将图像划分为多个8*8的矩阵。然后对每一个矩阵作DCT变换(变换公式此略)。变换后得到一个频率系数矩阵,其中的频率系数都是浮点数。

  3.量化  

  由于在后面编码过程中使用的码本都是整数,因此需要对变换后的频率系数进行量化,将之转换为整数。
  由于进行数据量化后,矩阵中的数据都是近似值,和原始图像数据之间有了差异,这一差异是造成图像压缩后失真的主要原因。
  在这一过程中,质量因子的选取至为重要。值选得过大,可以大幅度提高压缩比,但是图像质量就比较差;反之,质量因子越小(最小为1),图像重建质量越好,但是压缩比越低。对此,ISO已经制定了一组供JPEG代码实现者使用的标准量化值。

  4.编码  

  从前面过程我们可以看到,颜色转换完成到编码之前,图像并没有得到进一步的压缩,DCT变换和量化可以说是为编码阶段做准备。
  编码采用两种机制:一是0值的行程长度编码;二是熵编码(Entropy Coding)。
  在JPEG中,采用曲徊序列,即以矩阵对角线的法线方向作“之”字排列矩阵中的元素。这样做的优点是使得靠近矩阵左上角、值比较大的元素排列在行程的前面,而行程的后面所排列的矩阵元素基本上为0值。行程长度编码是非常简单和常用的编码方式,在此不再赘述。

  编码实际上是一种基于统计特性的编码方法。在JPEG中允许采用HUFFMAN编码或者算术编码

(0)

相关推荐

  • 关于图片存储格式的整理(JPEG格式介绍)

    JPG jpg全名是JPEG .JPEG 图片以 24 位颜色存储单个光栅图像.JPEG 是与平台无关的格式,支持最高级别的压缩,不过,这种压缩是有损耗的.渐近式 JPEG 文件支持交错. jpg功能 可以提高或降低 JPEG文件压缩的级别.但是,文件大小是以牺牲图像质量为代价的.压缩比率可以高达 100:1.(JPEG 格式可在 10:1 到 20:1 的比率下轻松地压缩文件,而图片质量不会下降.)JPEG 压缩可以很好地处理写实摄影作品.但是,对于颜色较少.对比级别强烈.实心边框或纯色区域大

  • 关于图片存储格式的整理(BMP格式介绍)

    BMP BMP(全称Bitmap)是Window操作系统中的标准图像文件格式 可以分成两类:设备相关位图(DDB)和设备无关位图(DIB),使用非常广. 它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大.BMP文件的图像深度可选lbit.4bit.8bit及24bit.BMP文件存储数据时,图像的扫描方式是按从左到右.从下到上的顺序.由于BMP文件格式是Windows环境中交换与图有关的数据的一种标准,因此在Windows环境中运行的图形图像软件都

  • PHP把JPEG图片转换成Progressive JPEG的方法

    JPEG文件格式有两种保存方式.他们是Baseline JPEG和Progressive JPEG. 两种格式有相同尺寸以及图像数据,他们的扩展名也是相同的,唯一的区别是二者显示的方式不同. Baseline JPEG 这种类型的JPEG文件存储方式是按从上到下的扫描方式,把每一行顺序的保存在JPEG文件中.打开这个文件显示它的内容时,数据将按照存储时的顺序从上到下一行一行的被显示出来,直到所有的数据都被读完,就完成了整张图片的显示.如果文件较大或者网络下载速度较慢,那么就会看到图片被一行行加载

  • js 将图片连接转换成base64格式的简单实例

    我们把图像文件的内容直接写在了HTML 文件中,这样做的好处是,节省了一个HTTP 请求.坏处呢,就是浏览器不会缓存这种图像.现在我们提供一个js: function convertImgToBase64(url, callback, outputFormat){ var canvas = document.createElement('CANVAS'), ctx = canvas.getContext('2d'), img = new Image; img.crossOrigin = 'Ano

  • JS+FLASH幻灯片播放图片脚本,整理了代码,使得调用更加方便!

    JS+FLASH幻灯片播放图片脚本,整理了代码,使得调用更加方便很多大站上都有的JS+FLASH幻灯片播放图片脚本,整理了代码,使得调用更加方便! 生成幻灯片式的网页图片效果演示 生成幻灯片式的网页图片效果演示 // 幻灯片式的网页图片滚动函数(不需要做任何改动) // 本程序由广州房产网整理,欢迎转载及提意见,版权没有 function roll_pic_flash(roll_pic_ary) { // 生成幻灯片式的网页图片滚动代码 var w = roll_pic_ary[3][0]; v

  • C#学习笔记整理-迭代器模式介绍

    什么是迭代器模式? 迭代器模式(Iterator):提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示. 何时使用迭代器模式? 当需要访问一个聚合对象,而且不管这些对象是什么都需要遍历的时候,需要考虑使用迭代器模式. 迭代器模式的组成 Iterator:迭代器抽象类,用于定义得到开始对象,对到下一个对象,判断是否到结尾,当前对象等抽象方法,统一接口. ConcreteAggregate:保存聚合对象. ConcreteIterator:继承于Iterator,实现具体如何对聚

  • PHP实现压缩图片尺寸并转为jpg格式的方法示例

    本文实例讲述了PHP实现压缩图片尺寸并转为jpg格式的方法.分享给大家供大家参考,具体如下: <?php function ImageToJPG($srcFile,$dstFile,$towidth,$toheight) { $quality=80; $data = @GetImageSize($srcFile); switch ($data['2']) { case 1: $im = imagecreatefromgif($srcFile); break; case 2: $im = imag

  • PHP图片处理类 phpThumb参数用法介绍

    phpThumb几个基本参数 一些有用的参数列一下: src:目标图片的地址 w:输出图片的宽度 h:输出图片的高度(如果不指定他将按w参数等比缩放) q:输出如果是JPG格式的,可以规定它的输出质量 bg:输出时的背景(如果需要) sw.sh.sx.sy:局部输出,宽高.起始位置 f:输出格式,可以为jpeg.png.gif.ico sfn:输出gif动画中的某一帧 fltr[]:滤镜,可以有很多效果,包括锐化.模糊.旋翻转.水印.边框.遮照.色彩调整等 更多效果可以参看官方例程: http:

  • python heic后缀图片文件转换成jpg格式的操作

    我就废话不多说了,直接上代码 heic_to_jpg.py import subprocess import os import io import whatimage import pyheif import traceback from PIL import Image def decodeImage(bytesIo): try: fmt = whatimage.identify_image(bytesIo) # print('fmt = ', fmt) if fmt in ['heic']

  • jQuery/CSS3图片特效插件整理推荐

    1.CSS3实现的底部带滚动云彩效果的网站登录页面 CSS3实现的底部带滚动云彩效果的网站登录页面特效源码,是一段实现页面底部拥有滚动云彩动态效果的特效源码,想要在网站中实现此类效果的朋友们可以前来下载使用.本段代码兼容目前最新的各类主流浏览器,是一款非常优秀的特效源码. 在线演示 源码下载 2.HTML5实现的3D球体斑点运动动画特效源码 这是一个很酷的HTML5 3D动画效果,是一个小球,小球表面出现跳动的斑点,斑点跳动时形成各种各样的形状,其实这款动画并不是正宗的HTML5 3D动画,而是

随机推荐