【Qt】png和jpg格式的图片(一)

jpgpng 图片格式

在写这篇文章之前,笔者在编写一个简单的 Qt 程序时遇到了这样一个问题:

问题:一个png格式的图片改成后缀为jpg格式的图片时,QLabel无法读取的问题。笔者是通过setStyleSheet()QImageQPixmap的接口均尝试过将改后缀后图片设置到QLabel中,均以失败告终。

特此研究了一下这jpgpng两者之间的区别,后续再研究一下Qt关于相关格式图片读取的问题。

图片会有jpgpng两种格式,那么这俩种格式的图片又有着什么样的区别呢?下面就给大家分享一下。 pngjpg都是常用的图片格式,其中png属于无损压缩,jpg是有损压缩,使用中两者最明显的一个区别是:

  • png支持透明通道
  • jpg的图片更适合在网络中传播和使用。

jpg格式

jpg: 是JPEG标准的产物,也是目前网络最为流行的图片格式,jpg格式的图片可以将图像文件压缩到最小格式,在高度压缩率的同时,可以展现是分丰富生动的图像,但是随着压缩比的增大,图片的品质会逐渐降低的。我们现在常用的jpg的标准全程为JPEG 2000标准,有以下几点特性:

  1. 高压缩率
  2. 无损压缩和有损压缩
  3. 渐进传输
  4. 感兴趣区域压缩
  5. 码流的随机访问和处理
  6. 容错性
  7. 基于内容的描述

png格式

png: 是一种采用无损压缩算法的位图模式,其设计目的是视图替代GIF和TIFF文件格式,同时增加一下GIF文件格式所不具备的特性。PNG使用从LZ77派生的无损数据压缩算法,一般应用于JAVA程序、网页或S60程序中,原因就是因为png的压缩比更高,生成文件体积小。png图片也有一些特性:

  1. 体积小
  2. 无损压缩
  3. 索引彩色模式
  4. 更优化的网络传输显示
  5. 支持透明模式

关于 png 格式还需要说明的是:

png格式有8位、24位、32位三种形式,其中8位PNG支持两种不同的透明形式(索引透明和alpha透明),24位PNG不支持透明,32位PNG在24位基础上增加了8位透明通道,因此可展现256级透明程度。

PNG8和PNG24后面的数字则是代表这种PNG格式最多可以索引和存储的颜色值。8代表2的8次方也就是256色,而24则代表2的24次方大概有1600多万色。

区别:pngjpg

转自百度百科:

1、JPEG可以对照片(或类似)图像生成更小的文件,这是由于JPEG采用了一种针对照片图像的特定有损编码方法,这种编码适用于低对比,图像颜色过渡平滑,噪声多,且结构不规则的情况下。如果在这种情况下用PNG代替JPEG,文件尺寸增大很多,而图像质量的提高有限。相应的,如果保存文本,线条或类似的边缘清晰,有大块相同颜色区域的图像,PNG格式的压缩效果就要比JPEG好很多,并且不会出现JPEG那样的高对比度区域的图像有损。如果图像既有清晰边缘,又有照片图像的特点,就在在这两种格式之间权衡一下了。JPEG不支持透明度。

2、由于JPEG是有损压缩,会产生迭代有损,在重复压缩和解码的过程中会不断丢失信息使图像质量下降。由于PNG是无损的,保存将要被编辑的图像来说更加合适。虽然PNG压缩照片图像也有效,但有专门针对照片图像设计的无损压缩格式,比如无损JPEG2000,Adobe DNG等。总的来说这些格式都不能做到适用所有图像。对于将要发布的图像可以保存成JPEG,用JPEG编码一次不会造成明显的图像有损。

总结就是:

  1. jpg格式的图片能在高度压缩率的同时,展现十分丰富生动的图像,但是随着压缩比的增大,图片的品质会逐渐降低的。而png图片的特性就是体积小,节约空间,与jpg图片相比,png图片时无损压缩,在不损失图片数据的情况下,可以快速的获取自己想要的图片,而且图片的质量并不会下降。
  2. png格式的图片可以编辑,比如图片中的字体、线条等,可以通过ps等软件更改。但是jpg格式的图片则不可以更改,pngjpg图片相比png格式的图片更大。

猜你喜欢

转载自blog.csdn.net/Fuel_Ming/article/details/124397567