QT的QImage類的使用
詳細說明
QImage類提供了獨立於硬體的影像表示形式,該影像表示形式可以直接訪問畫素資料,並且可以用作繪製裝置。
Qt提供了四個用於處理影像資料的類:QImage,QPixmap,QBitmap和QPicture。 QImage是為I / O設計的,並針對直接畫素訪問和操縱進行了優化,而QPixmap是為在螢幕上顯示影像而設計和優化的。 QBitmap只是繼承QPixmap並確保深度為1的便捷類。最後,QPicture類是一種繪畫裝置,可以記錄和重放QPainter命令。
由於QImage是QPaintDevice子類,因此可以使用QPainter直接在影像上繪製。在QImage上使用QPainter時,可以在當前GUI執行緒之外的其他執行緒中執行繪製。
QImage類支援Format列舉描述的幾種影像格式。這些包括單色,8位,32位和alpha混合影像,這些影像在所有Qt 4.x版本中都可用。
QImage提供了一組函式,這些函式可用於獲取有關影像的各種資訊。還有一些功能可以實現影像轉換。
由於QImage類使用隱式資料共享,因此可以按值傳遞QImage物件。 QImage物件也可以流式傳輸和比較。
注意:如果要在Qt的靜態版本中載入QImage物件,請參閱Plugin HowTo。
警告:不支援在格式為QImage :: Format_Indexed8的QImage上繪畫。
讀取和寫入影像檔案
QImage提供了幾種載入影像檔案的方式:可以在構造QImage物件時載入該檔案,也可以稍後使用load()或loadFromData()函式來載入該檔案。 QImage還提供靜態fromData()函式,從給定資料構造一個QImage。載入影像時,檔名可以引用磁碟上的實際檔案,也可以引用應用程式的嵌入式資源之一。
畫素操縱
用於操縱影像畫素的功能取決於影像格式。 原因是單色和8點陣圖像基於索引並使用顏色查詢表,而32點陣圖像直接儲存ARGB值。 有關影像格式的更多資訊,請參見“影像格式”部分。
對於32點陣圖像,可以使用setPixel()函式將給定座標處的畫素顏色更改為指定為ARGB四聯體的任何其他顏色。 要生成合適的QRgb值,請使用qRgb()(向給定的RGB值新增預設的alpha分量,即建立不透明的顏色)或qRgba()函式。 例如:
對於8位和單色影像,畫素值只是影像顏色表中的索引。 因此,setPixel()函式只能用於將給定座標處的畫素顏色更改為影像顏色表中的預定義顏色,即只能更改畫素的索引值。 若要更改顏色或將顏色新增到影像的色表,請使用setColor()函式。
顏色表中的一項是編碼為QRgb值的ARGB四聯體。 使用qRgb()和qRgba()函式製作一個適合與setColor()函式一起使用的QRgb值。 例如:
相關文章
- QT的QAxBase類的使用QT
- QT的QProgressDialog類的使用QT
- QT的QWGLNativeContext類的使用QTContext
- QImage:使用QImage建構函式載入影像和使用成員函式loadFromData載入影像的區別函式
- qt -- QString類及常用函式功能的使用QT函式
- QPixmap和QImage的區別及剖析
- QImage 與 Mat 互轉
- QT中類之間的關係圖QT
- C++ Qt開發:使用順序容器類C++QT
- C++ Qt開發:使用關聯容器類C++QT
- QT視窗類QT
- QT中 uic 工具的使用QTUI
- Qt QApplication 類簡介--Qt 類簡介專題(四)QTAPP
- Qt中的定時器的使用QT定時器
- Qt事件過濾器的使用QT事件過濾器
- QT - 13.1.1 ListView 的簡單使用QTView
- Qt Creator 提供的預設基類只有三種QT
- 在Qt裡使用QSplashScreen類製作Splash啟動視窗QT
- Qt容器類QList、QLinkedList和QVector類QT
- QT5.9關於QMenuBar的使用QT
- Qt qAbs、qMax、qRound和qSwap的使用QT
- Qt中MainWindow類例項QTAI
- Qt中的佈局淺析與彈簧的使用,以及Qt居中的兩種方法QT
- QT執行緒的使用 moveToThread()QT執行緒thread
- Qt中(圖片)資源的使用方式QT
- Random 類的使用random
- File類的使用
- Qt 字型(04):QFont類【官翻】QT
- Qt類繼承關係圖QT繼承
- cv::Mat轉QImage導致影像色彩異常
- Qt-pyqt6與QTDesginers的相互使用技巧QT
- Qt入門(13)——Qt的呼叫退出QT
- Qt 報錯 “類名”does not name a typeQT
- python類的使用Python
- xUtils類庫的使用
- 【QT】 Qt多執行緒的“那些事”QT執行緒
- 已經編譯好的opencv QT creator直接使用編譯OpenCVQT
- 使用QT-QSerialport打不開串列埠的原因QT串列埠