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

QT 如何识别文件的编码格式 在日常开发过程中,经常会遇到读取某个文件的内容,相信大家也会遇到读取出现乱码的问题,如果我们在读取文件之前,先检测文件的编码格式,然后再在读取的时候设置对应的编码,是不是问题就解决了呢?经过笔者认(上)真(网)思(百)索(度)一番,于是有了今天这篇“自动识别文件编码”的文章。... 阅读详情

jpg 和 png 图片格式

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

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

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

图片会有jpg和png两种格式,那么这俩种格式的图片又有着什么样的区别呢?下面就给大家分享一下。 png和jpg都是常用的图片格式,其中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多万色。

区别:png 和 jpg

转自百度百科:

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格式的图片则不可以更改,png与jpg图片相比png格式的图片更大。
【Qt】一篇全面的关于Qt对图像数据的操作总结 文章目录一、简介二、QImage类(2-1)QImage简介(2-2)使用QImage读取图像文件(2-3)使用QImage进行图像写入(2-4)获取图像信息(2-4-1)获取```Geometry```信息(2-4-2)获取颜色信息(2-4-3)获取文本信息(2-4-4)获取图像底层信息(2-5)操作图像像素(2-6)图像格式三、QPixmap类(3-1)QPixmap简介(3-2)使用QPixmap读取图像文件(3-3)使用QPixmap进行图像数据写入(3-4)获取图像信息(3-4-1)获取Geome 阅读详情

相关推荐

Qt图片加载踩坑记:当PNG文件其实是JPG时,QPixmap和QImage如何正确加载?

本文深入解析了Qt开发中因PNG文件实际为JPG格式导致QPixmap和QImage加载失败的常见陷阱。通过对比两者核心差异,揭示了load()函数依赖文件后缀名而被“欺骗”的机制,并提供了基于loadFromData()的健壮加载方案与诊断方法,帮助开发者构建更稳定的图片处理应用。

tomato的博客 1002

Qt jpg图片显示

按如下述步骤才能显示jpg、jpeg格式的图片: 1 在你主启动程序即exe同一目录下新建一个目录,目录名必须和QT安装目录下的imageformats目录同名。也即新建一个名为imageformats的文件夹。 2 找到QT安装目录下D:\Qt\5.8\plugins\imageformats子目录,将该子目录下的qjpeg4.dll文件复制到步骤1中新建的imageformats目录即可。

qq_32250025的博客 4003

Qt图片加载翻车实录:当PNG文件其实是JPG时,QPixmap和QImage如何正确加载?

本文探讨了Qt开发中QPixmap和QImage加载图片时遇到的常见问题——文件扩展名与实际格式不符。通过分析问题现象、深入Qt图片加载机制,提供了多种解决方案,包括强制指定格式和使用loadFromData方法自动检测格式。文章还分享了最佳实践和错误排查指南,帮助开发者正确处理图片加载问题。

weixin_30839881的博客 383

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

Qt 图片读取(二) Qt 源码阅读

此地无银 3261

保姆级教程:用QImageReader彻底解决Qt中JPG/PNG图片加载的‘玄学’问题

本文详细介绍了在Qt开发中使用QImageReader解决JPG/PNG图片加载问题的终极方案。通过分析传统QPixmap/QImage加载方法的缺陷,提出基于QImageReader的健壮实现,包括自动检测实际格式、错误处理和性能优化技巧,帮助开发者彻底解决图片加载中的'玄学'问题。

weixin_30561425的博客 314

Qt图片加载踩坑记:当PNG文件实际是JPG时,QPixmap和QImage如何处理?

本文深入探讨了Qt开发中QPixmap和QImage在加载图片时,因文件后缀名与实际格式不符(如PNG文件实为JPG)导致的加载失败问题。通过分析二进制魔数诊断格式欺骗,并提供了基于loadFromData的鲁棒性解决方案,帮助开发者构建能自动识别真实格式的图片加载模块,提升应用稳定性。

weixin_29022115的博客 316

Qt之生成png/jpg/bmp格式图片

一、问题描述:有时候需要把Qt绘制的一些图形保存为png/jpg/bmp格式的图片,下面就根据自己写的一个简单的测试程序来讲解一下Qt中保存图片的方法。本文主要讲解使用Qpainter和QImage组合使用保存图片的方法。二、显示效果:1、界面显示效果: 2、生成的图片及图片显示效果: 三、核心代码示例:#include "widget.h" #include "ui_widget.h" #in

ISmileLi的博客 1万+

qt实现图片格式转换

第二个参数表示支持的格式,如下。例如jpg转成其他格式的图片。0-100,-1(默认)第三个参数是保存的质量。

我不是码农的博客~~~ 1059

Qt QImage 读写jpg格式 需要加载插件

Qt默认支持png格式,可以直接读写png。 Qt默认不支持jpg格式,需要加载插件后,才能读写jpg。 1.通过qt.conf文件配置jpg插件,插件路径灵活。 2.调用代码加载jpg插件,插件路径固定。

blair的博客 5846

【基于51】红外寻迹智能小车 - 代码篇

这是一个基于C51单片机的红外巡线智能小车,是一个适合嵌入式单片机、C语言初学者练习的小Demo,文章提供完整的项目思路、免费的源代码。

ZER00000001的博客 3万+

手把手教你用FPGA驱动DAC8830:一个Verilog SPI驱动模块的完整实现与调试

本文详细介绍了如何使用FPGA通过Verilog实现DAC8830的SPI驱动模块,包括SPI通信机制解析、Verilog模块设计、代码优化及调试技巧。重点解决时钟同步、状态机设计等工程实践问题,适用于音频处理、仪器仪表等高精度数模转换场景。

weixin_26886855的博客 229

常用图片格式JPG\PNG\SVG该如何选择?

JPG、PNG、SVG三种图片格式该如何选择

wen110898的博客 4520

配置VS Code使用Linux服务器上的Matlab

0、需求 Linux服务器上安装有Matlab 无图形界面,只能使用命令行工具,编辑文件不方便 1、VS Code插件安装 在扩展商店中搜索matlab,会出现Matlab Extension Pack,里面有整理好的matlab扩展 这里只安装了第一排的三个扩展 2、设置(Windows、Mac的设置类似,只是不同系统的文件路径不同) 安装好扩展,重启VS Code后,进行设置 打开:文件→首选项→设置(或快捷键ctrl+,),搜索matlab,结果如下图所示;直接打开完整json配置文件(图

赵彬的博客 5008

Qt代码-PNG转JPG

QMessageBox::information(this, "成功", QString("转换成功!m_statusLabel->setText(QString("已选择: %1").arg(m_pngFilePath));m_statusLabel->setText(QString("转换成功: %1").arg(jpgFilePath));qualityLabel->setText(QString("JPG质量: %1").arg(value));"JPG图片 (*.jpg);

寒寒豆豆软件公司的博客 638

Windows Server 2022域控环境下的MDT部署工具安装与配置避坑指南

本文详细介绍了在Windows Server 2022域控环境中安装和配置MDT(Microsoft Deployment Toolkit)的全流程,包括ADK与Windows PE的精准安装、MDT高级配置、部署工作流构建及性能优化技巧。通过实战指南帮助IT管理员实现自动化系统部署,提升企业IT运维效率,特别适用于需要静默下发系统的大规模部署场景。

weixin_28481133的博客 435

gdb对dwarf调试信息的解析和使用

gdb的对dwarf的调试信息的解析到使用的过程分析

JS072110的专栏 9564

Qt&Vtk-003-读取jpg、png、dicom等格式图片

欢迎来到我的博客,希望这篇文章对你有所帮助,如果觉得不错,请点赞搜藏哈。 文章目录Qt&Vtk 显示Jpg、Png、Tiff、Dicom、Bmp及3DCube1 简单介绍2 使用QVTKWidget3 功能实现3.1 JPG图片实现3.2 PNG图片实现3.3 BMP图片实现3.4 TIFF图片实现3.5 DICOM图片实现3.6 3D Cube实现4 关闭VTK调试窗口5 源码 Qt&Vtk 显示Jpg、Png、Tiff、Dicom、Bmp及3DCube 本文其实才能算是真正的Qt与Vt.

DreamLife&Yaothos 2732

【OpenClaw从入门到精通】第41篇:2026年4月最新版——从零开始搭建你的第一个安全AI助理(保姆级实战教程)

2026年3月CNCERT联合发布《OpenClaw安全使用实践指南》后,安全部署成为OpenClaw使用的核心前提。本文针对新手及进阶用户,基于官方安全指引,提供三套实战部署方案:阿里云一键部署(新手首选)、Docker容器隔离部署(进阶推荐)、本地安全安装(测试专用),并详解阿里云百炼Coding Plan API接入流程。全文涵盖环境准备、分步实操、安全加固、问题排查等全流程,所有命令可直接复制执行,无需依赖外部代码库。通过本文,读者可零基础搭建安全隔离的OpenClaw AI助理,兼顾实用性与安全性

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 2196

基于Qt的jpg、png图片批处理成svg图工具

项目中有一个功能只能识别svg图,但是我们的原始数据都是jpg或者png图片,这就需要将jpg或者png转成svg了。我们有好几G的原始图片需要转成svg,经过考虑,最终决定用Qt来开发这个小工具,简单方便。废话不多说,直接上核心代码。 void picToSVGCOnvert(const QString &picPath, const QString &svgFile) { QFile file(picPath); file.open(QIODevice::Rea...

bluebluesky_day的博客 1680

4、风险管理、信息安全与信息管理的核心原则

本文深入探讨了风险管理、信息安全与信息管理的核心原则,涵盖Risk IT框架、ISO 31000标准以及信息安全与信息管理的关键原则。通过案例分析与实际应用挑战的解析,帮助组织更好地应对数字化时代的风险与安全问题,实现可持续发展。

bread的博客 120

Halcon那些事:Halcon非常核心的1个概念reduce_domain算子的理解和1个详细的使用示例

Reduce是减少的意思。并不是真的去裁剪图像,而是定义一个“感兴趣的区域(Region of Interest, ROI)”。后续的图像处理算子将只在这个定义的区域内有效,区域外的像素将被忽略。在一张白纸(完整图像)上放一张镂空的纸板(Domain)。我们后续的绘画(图像处理操作)只会透过镂空的部分影响到下面的白纸。镂空纸板之外的部分保持不变,也不会被处理。关键步骤:使用ReduceDomain,将图像的域限制为ROI区域,图像在原来图像基础上存在图像区域。

十多年IT经验,专注机器视觉,智能制造半导体行业 577

关于qt qpixmap qimage 无法正常加载jpg格式图片问题(坑啊)

近期遇到一个问题是 QPixmap / QImage 无法加载 .jpg / .jpeg 格式的图片 QLabel .showPixmap 无效 以下都确认是没有问题的 1.图片路径无问题 2.大部分都说是打包的程序没有把 exe 同级目录的 plugins 或者 imageformats 目录加进来 因为内部包含 我这些我试了 对我的这个问题是无效的,可能对你们有帮助 QApplication::addLibraryPath(QCoreApplication::applicationDirPath()+

shenmingyi.blog.youkuaiyun.com 8745

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

通过文件二进制信息判断图片类型(png,jpg,gif)

package lab.sodino.img;import java.io.IOException;import java.io.InputStream;import javax.microedition.io.Connector;import javax.microedition.io.file.FileConnection;import javax.microedition

Sodino的专栏 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Qt中用QLabel显示图片

关于QT设置图片的一些心得,转载自网络一篇博文,对自己帮助很大

积累点滴,保持自我 3万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

qt不支持jpg格式图片

在编译 macosx客户端时,选择了一个jpg格式的图片作为背景图片,在cmake编译后一切都正常,但是在genapp.sh脚本进行xcode编译和qtdeploy打包后,其他都正常,但是背景图片却显示不出来。 一开始我怀疑是打包过程出了问题,整了好久,花费了好多精力和时间来查资料,结果也没成功。 今天早上突然发现原来的图片都是png格式,而我引入的背景图片是jpg格式的,感觉

giggle90的专栏 3570

Qt Socket传输图片(一)

上次简单实现了python发送和接收图片的Demo,本次通Qt的接收图片,并显示在QLabel上。 在开始之前,先了解下常见图片的几种格式。 ①BMP(.bmp) 位图图像是Microsoft为Windows开发的格式。bmp文件没有压缩或信息丢失,这使得图像具有质量很高,当然图像文件也就比较大。 ②JPEG(.jpg .jepg) 是一种有损格式,意味着图像被压缩成较小的文...

Pou光明的博客 5484
上一篇: 【Qt】Qt在Win系统上的消息通知
下一篇: 【Qt】png和jpg格式的图片(二)
欧恩意
博客等级 码龄7年 677粉丝 138原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

欧恩意

如有帮助,感谢打赏!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值