当前位置: 首页 > news >正文

【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 来节省内存。

相关文章:

  • Kotlin 极简小抄 P8(不可空类型、可空类型、注意事项、非空断言 !!)
  • linux文件重命名命令
  • html,js获取扫码设备的输入内容
  • HTTPS和HTTP区别
  • springboot3.x只需两步快速整合nacos作配置中心
  • javaweb-html
  • springboot使用xdoc-report包导出word
  • 【写在创作纪念日】基于SpringBoot和PostGIS的各省东西南北四至极点区县可视化
  • 深度学习Y8周:yolov8.yaml文件解读
  • Python60日基础学习打卡D32
  • 强化学习鱼书(7)——神经网络和Q学习
  • TCP全连接和tcpdump抓包实现
  • 量化研究--ATR高频量化网格策略实盘研究
  • cocos creator使用jenkins打包微信小游戏,自动上传资源到cdn,windows版运行jenkins
  • JavaWebsocket-demo
  • Spark Core 源码关键环节的深度解析
  • mapbox进阶,手写放大镜功能
  • Windows安装MongoDb.并使用.NET 9连接
  • 前后端的双精度浮点数精度不一致问题解决方案,自定义Spring的消息转换器处理JSON转换
  • [杂学笔记]浏览器多进程与多线程架构、wstring类型、哈希表、红黑树与哈希表的对比、C++标准库Random类
  • 魔都眼|84岁美琪大戏院焕新回归:《SIX》开启中国首演
  • 云南陆良一装载机因制动失效致6死,操作者被采取刑事强制措施
  • 央视网评广东校服自愿原则:斩断“统一着装”背后的利益脐带
  • 资深娱乐策划人、导演马勇逝世,终年51岁
  • 第九届非遗节将于五月下旬举办,600个非遗项目将参展参演
  • 4月22城新房价格上涨:上海一二手房价环比均上涨,核心城市土地热带动市场热度提升