【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_RGB666,?Format_RGB555,?Format_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_Premultiplied,?Format_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_BGR30,?Format_RGB30
    每個顏色分量占 10 位,提供更高色彩深度。
  • Format_Alpha8
    僅包含 8 位 Alpha 通道,用于遮罩或透明度圖。
  • Format_Grayscale8
    8 位灰度圖像,每個像素代表亮度(0 為黑,255 為白)。

如何選擇正確的?Format

目標推薦格式
無透明度要求的彩色圖像Format_RGB32,?Format_RGB888
支持透明度的圖像Format_ARGB32,?Format_RGBA8888
快速合成與渲染Format_ARGB32_Premultiplied,?Format_RGBA8888_Premultiplied
節省內存Format_RGB16,?Format_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
繁體地址,請注明出處:http://hk.pswp.cn/web/81148.shtml
英文地址,請注明出處:http://en.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…