【Qt】QImage::Format

QImage::Format 是 Qt 中用于指定图像像素数据格式的枚举类型。它决定了图像如何存储颜色信息和透明度(如果有)。选择合适的 Format 对性能、内存占用以及是否支持某些特性(如透明通道)有重要影响。

常见的 QImage::Format 枚举值及其用途:


1. 无效格式
  • Format_Invalid
    表示无效的图像格式,通常用于错误检测或初始化。

2. 单色/黑白图像
  • Format_Mono
    每个像素用 1 位表示,0 表示黑色,1 表示白色(未预乘透明度)。
  • Format_MonoLSB
    类似于 Format_Mono,但每个字节中最低有效位(LSB)对应第一个像素。

3. 调色板索引图像
  • Format_Indexed8
    每个像素是一个 8 位索引值,指向一个颜色表(colorTable()),最多支持 256 种颜色。

4. RGB 格式(无透明通道)
  • Format_RGB32
    每个像素用 32 位表示,其中 R、G、B 各占 8 位,剩余 8 位未使用(通常为 0 或填充)。
  • Format_RGB16
    每个像素用 16 位表示,通常是 RGB565 格式(R:5, G:6, B:5)。
  • Format_RGB888
    每个像素用 24 位表示,R、G、B 各占 8 位。
  • Format_RGB666Format_RGB555Format_RGB444
    不同精度的 RGB 图像格式,适用于对内存敏感的场景。

5. ARGB 格式(带透明通道)
  • Format_ARGB32
    每个像素用 32 位表示,A(Alpha)、R、G、B 各占 8 位,Alpha 未预乘(即原始 Alpha 值)。

  • Format_ARGB32_Premultiplied
    同样是 32 位,但 Alpha 预乘到颜色分量中,即:

    • R = R_original × A

    • G = G_original × A

    • B = B_original × A

    • A 保持不变

    区别说明:

    • Format_ARGB32:保留原始颜色和透明度,适合编辑和处理。
    • Format_ARGB32_Premultiplied:在渲染时更高效(尤其在合成操作中),因为不需要额外计算预乘 Alpha,常用于 GPU 渲染。
  • Format_ARGB8565_Premultiplied
    使用 24 位,其中 A 占 8 位,RGB 分别为 8:5:6:5(预乘)。

  • Format_ARGB8555_PremultipliedFormat_ARGB4444_Premultiplied
    不同精度的预乘格式,适用于特定硬件或压缩需求。


6. RGBA 格式
  • Format_RGBA8888
    每个像素用 32 位表示,R、G、B、A 各占 8 位,Alpha 未预乘
  • Format_RGBA8888_Premultiplied
    同上,但 Alpha 预乘,适合快速合成。

7. 其他专业格式
  • Format_RGBX8888
    32 位 RGB 格式,最后 8 位未使用(通常为 0)。
  • Format_BGR30Format_RGB30
    每个颜色分量占 10 位,提供更高色彩深度。
  • Format_Alpha8
    仅包含 8 位 Alpha 通道,用于遮罩或透明度图。
  • Format_Grayscale8
    8 位灰度图像,每个像素代表亮度(0 为黑,255 为白)。

如何选择正确的 Format

目标推荐格式
无透明度要求的彩色图像Format_RGB32Format_RGB888
支持透明度的图像Format_ARGB32Format_RGBA8888
快速合成与渲染Format_ARGB32_PremultipliedFormat_RGBA8888_Premultiplied
节省内存Format_RGB16Format_Indexed8
灰度图像Format_Grayscale8
遮罩/透明度图Format_Alpha8

示例代码:转换图像格式

 

cpp

QImage image("input.png"); QImage rgbaImage = image.convertToFormat(QImage::Format_ARGB32); // 明确转成 ARGB32


小结

  • 非预乘格式(如 Format_ARGB32 更适合图像处理与编辑。
  • 预乘格式(如 Format_ARGB32_Premultiplied 更适合高性能渲染(尤其是图形硬件加速)。
  • 如果不需要透明度,使用 Format_RGB32 或 Format_RGB888 更合适。
  • 对资源受限的设备,可考虑使用 Format_RGB16 或 Format_Indexed8 来节省内存。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/web/81148.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法笔记·数学·欧拉函数

题目:(AcWing) 给定 n 个正整数 ai,请你求出每个数的欧拉函数。 欧拉函数的定义 1∼N 中与 N 互质的数的个数被称为欧拉函数,记为 ϕ(N)。 若在算数基本定理中,N,则: ϕ(N) N 输入…

深入理解Redis线程模型

Redis数据 redis数据保存在内存,但是会持久化到硬盘 Redis线程 Redis的整体线程模型可以简单解释为 客户端多线程,服务端单线程。也就是可以多个客户端同时连接。 核心线程模型:单线程 多路复用 Redis 的主线程负责处理所有客户端请求&a…

「Python教案」输入输出函数的使用

课程目标 1.知识目标 能使用input()输入函数和print()输出函数实现人机之间的交互。能够合理的确定输入数据的数据类型,并进行数据类型转换。能够使用格式化字符串(f-string)将数据动态输出。 2.能力目标 能够使用…

医疗影像中,DICOM点云、三角面片实体混合渲染(VR)

此文章,涉及到专业性比较强,所以,大部分的内容,基本上都是示例代码的形式出现。以下的技术路径,完全经过实践验证,并且效果很好,可以放心使用。 1 概述 在医学影像中,对DICOM的渲染…

【C/C++】线程状态以及转换

文章目录 线程状态以及转换1 基本状态1.1 新建(New)1.2 就绪(Ready / Runnable)1.3 运行中(Running)1.4 阻塞/等待(Blocked / Waiting / Sleeping)1.5 挂起(Suspended&am…

Python与自动驾驶数据集处理:构建智能驾驶的基石

Python与自动驾驶数据集处理:构建智能驾驶的基石 在自动驾驶技术的快速发展中,数据始终是最核心的驱动力。自动驾驶系统依赖于大量的传感器数据(激光雷达、摄像头、GPS等),通过深度学习算法不断优化决策,使车辆能够自主感知、理解道路环境并做出合理决策。而 Python 作为…

【菜狗work前端】小程序加if判断时不及时刷新 vs Web

零、前提&#xff1a; 实现input输入数字不大于10000&#xff08;需要配合typenumber&#xff0c;maxlength5&#xff0c;这里没写&#xff09; 一、探究代码&#xff1a; <input v-model"model1" input"changeModel1" placeholder"请输入拒收件…

【Netty】- NIO基础2

阻塞模式 客户端代码 public class Client {public static void main(String[] args) throws IOException {SocketChannel sc SocketChannel.open();sc.connect(new InetSocketAddress("localhost", 8080));// sc.write(Charset.defaultCharset().encode("he…

【WebRTC】源码更改麦克风权限

WebRTC源码更改麦克风权限 仓库: https://webrtc.googlesource.com/src.git分支: guyl/m125节点: b09c2f83f85ec70614503d16e4c530484eb0ee4f

cocos creator使用jenkins打包微信小游戏,自动上传资源到cdn,windows版运行jenkins

cocos 版本2.4.11 在windows上jenkins的具体配置和部署&#xff0c;可参考上一篇文章cocos creator使用jenkins打包流程&#xff0c;打包webmobile_jenkins打包,发布,部署cocoscreator-CSDN博客 特别注意&#xff0c;windows上运行jenkins需要关闭windows自己的jenkins服务&a…

力扣刷题(第三十六天)

灵感来源 - 保持更新&#xff0c;努力学习 - python脚本学习 多数元素 解题思路 这道题是要找出数组中出现次数超过一半的元素。有几种不同的方法可以解决这个问题&#xff1a; 哈希表统计法&#xff1a;遍历数组&#xff0c;用哈希表统计每个元素的出现次数&#xff0c;…

关于读取CH584单片机的IO电平出现到的乌龙

本来是调用的库里的 uint8_t get_wake_up_sta (void) {return GPIOB_ReadPortPin(GPIO_Pin_10);//return cc_gpio_get_in_io (WAKUP_CH);} 然后读出来是0&#xff0c;我都配置上拉了。 搞不到原因。 最后是CH584单片机只有0和非零两种状态&#xff0c;读出来1024被转换成无…

Opencv常见学习链接(待分类补充)

文章目录 1.常见学习链接 1.常见学习链接 1.Opencv中文官方文档 2.Opencv C图像处理&#xff1a;矩阵Mat 随机数RNG 计算耗时 鼠标事件 3.Opencv C图像处理&#xff1a;亮度对比度饱和度高光暖色调阴影漫画效果白平衡浮雕羽化锐化颗粒感 4.OpenCV —— 频率域滤波&#xff…

anaconda、miniconda、conda的关系及miniconda安装

anaconda、miniconda、conda的关系及miniconda安装 文章目录 前言正文定义关系Linux安装miniconda新建一个python3.8环境 参考 前言 本文用于记录关于Anaconda、conda和Miniconda的定义及其关系的总结123&#xff1a; 正文 定义 conda 一个跨平台的开源包管理和环境管理工具…

2024-2025年AI领域重大事件深度解析:技术革命、产业重构与未来挑战

一、技术突破&#xff1a;从多模态到具身智能的跨越式演进 1. 生成式AI的“核爆级”升级 多模态融合&#xff1a;OpenAI的GPT-4o实现文本、图像、语音的实时交互&#xff0c;GPQA基准测试得分达87.7%&#xff0c;在科学推理和编程任务中表现卓越1。谷歌的Gemini 2.0 Flash支持…

城市地下“隐形卫士”:激光甲烷传感器如何保障燃气安全?

城市“生命线”面临的安全挑战 城市地下管网如同人体的“血管”和“神经”&#xff0c;承载着燃气、供水、电力、通信等重要功能&#xff0c;一旦发生泄漏或爆炸&#xff0c;将严重影响城市运行和居民安全。然而&#xff0c;由于管线老化、违规施工、监管困难等问题&#xff0…

融云 uni-app IMKit 上线,1 天集成,多端畅行

融云 uni-app IMKit 正式上线&#xff0c;支持一套代码同时运行在 iOS、Android、H5、小程序主流四端&#xff0c;集成仅需 1 天&#xff0c;并可确保多平台的一致性体验。 融云 uni-app IMKit 在 Vue 3 的高性能加持下开发实现&#xff0c;使用 Vue 3 Composition API&#x…

《Claude:人工智能界的璀璨新星》

一、Claude 登场&#xff1a;AI 新时代的震撼开篇 在科技飞速发展的今天&#xff0c;人工智能&#xff08;AI&#xff09;已经成为推动社会进步和创新的核心力量。从智能语音助手到自动驾驶汽车&#xff0c;从图像识别技术到自然语言处理&#xff0c;AI 正以惊人的速度渗透到我…

Python中tqdm进度条工具和enumerate函数的使用详解

tqdm进度条工具 tqdm 是 Python 中一个非常流行的 进度条显示工具库&#xff0c;常用于迭代操作的可视化&#xff0c;比如训练神经网络、批量数据处理等任务。 一、tqdm 是什么&#xff1f; tqdm 全称是 taqaddum&#xff08;阿拉伯语&#xff0c;意为“进展”&#xff09;&a…

yum命令常用选项

刷新仓库列表 sudo yum repolist清理 Yum 缓存并生成新的缓存 sudo yum clean all sudo yum makecache验证 EPEL 源是否已正确启用 sudo yum repolist enabled安装软件包 sudo yum install <package-name> -y更新软件包 sudo yum update -y仅更新指定的软件包。 su…