QT的QImage類的使用

it_xiangqiang發表於2020-12-13

詳細說明
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值。 例如:
在這裡插入圖片描述

相關文章