我不明白QImage和QPixmap有什麼區別,它們似乎提供了相同的功能。什麼時候應該使用QImage,什麼時候應該使用QPixmap?QImage和QPixmap有什麼區別?
回答
通過讀取QImageQPixmap和該文檔Easilly回答:
的的QPixmap類是可用於作爲塗料裝置的離屏圖像表示。
The QImage class提供了一個獨立於硬件的圖像表示形式,允許直接訪問像素數據,並且可以用作繪畫設備。
編輯:此外,從@戴夫的回答是:
你不能操縱GUI線程之外的QPixmap,但QImage的有沒有這樣的限制。
而且從@Arnold:
下面是通常(不總是)適用的簡短摘要:
- 如果您打算處理的圖像,修改它,改變它的像素, 等,使用QImage。
- 如果您計劃繪製同一圖像大於屏幕上一次 ,將其轉換爲QPixmap的。
感謝您的幫助...什麼是一般過程,QPixmpa和QImage加載圖片..它在內存中是什麼..謝謝.. – 2012-04-26 02:46:07
我不知道你在做什麼,但在[這個問題](http://stackoverflow.com/questions/9011108/image-scaling-keepaspectratiobyexpanding-through-opengl)我演示瞭如何從磁盤加載YV12數據,使用GLSL片段着色器轉換爲RGB,然後將其顯示在在QImage裏面的屏幕。如果你更清楚你想要完成什麼,我想我可以指出你正確的方向。 – karlphillip 2012-04-26 03:13:42
感謝您的回答。 – 2012-04-26 04:03:35
Qt實驗室有一系列很好的文章,解釋了很多關於Qt圖形系統的文章。 This article特別在QImage
與QPixmap
有一段。
下面是通常(不總是)適用的簡短摘要:
- 如果您打算處理的圖像,修改它,改變它的像素等,使用
QImage
。 - 如果您計劃繪製同一圖像不止一次在屏幕上,將其轉換爲
QPixmap
。
謝謝。這段話告訴我們:有兩種不同的方式來加載圖片,光柵和OpenGL?是對的? – 2012-04-26 02:50:59
我不太明白這個問題。 「光柵」和「OpenGL」都不具體表示加載圖片的方式。 – 2012-04-26 03:16:23
一個重要區別是,你不能創建或什麼,但主界面線程操縱QPixmap
。你可以,但是,創建和操作後臺線程QImage
實例,然後將它們傳遞迴GUI線程之後將它們轉換。
在工業環境中重要:
的QPixmap的存儲顯卡做在顯示器上。不是QImage。
所以,如果你運行的應用程序的服務器和客戶端站做顯示器,它是在網絡使用的期限很顯著。
使用Pixmap,重繪包括通過網絡發送只重繪(幾個八位字節)的命令。它包括與QImage的發送整個圖像(幾莫?...)
- 的QPixmap 是一個「圖像對象」,其
pixel
表示是在你的代碼沒有結果,因此QPixmap的是爲了在顯示屏幕上呈現圖像而設計和優化,當使用X11時,它被存儲在XServer上,因此在XWindow上繪製QPixmap的速度比繪製QImages的快得多,因爲數據已經在服務器上並準備使用。
當使用的QPixmap:如果你只是想畫一個現有的圖像(圖標..背景壁紙等),特別是多次,然後用QPixmap的。
- QImage的是所述客戶代碼的「在存儲器中的一個像素陣列」,是QImage的設計和優化用於I/O,以及用於直接訪問的像素和操縱。
當使用QImage的:如果你想畫,用Q漆,或操縱圖像的像素。
- QBitmap僅僅是一個方便的QPixmap子類確保深度爲1,它的一個單色(1位深度)的pixmap。就像QPixmap一樣,QBitmap針對使用隱式數據共享進行了優化。
- QPicture是塗料設備,記錄和重放QPainter的命令 - 繪圖 -
- 1. 如何組合QImage和QPixmap?
- 2. QImage到QPixmap很貴
- 3. QImage/QPixmap大小限制?
- 4. 移動QImage/QPixmap的色調
- 5. 有什麼區別`和$(Bash中有什麼區別?
- 6. 有什麼區別? :和||
- 7. &&和||有什麼區別?
- 8. 「/」和「/ *」有什麼區別?
- 9. 有什麼區別:。!和:r!?
- 10. ==和===有什麼區別?
- 11. Appender和〜有什麼區別?
- 12. $ @和$ *有什麼區別?
- 13. is和=有什麼區別?
- 14. #.00和#。##有什麼區別?
- 15. `==`和`is`有什麼區別?
- 16. '=='和'==='有什麼區別?
- 17. /和/#/有什麼區別?
- 18. | 0和~~有什麼區別?
- 19. `&`和`ref`有什麼區別?
- 20. ==和===有什麼區別?
- 21. ==和===有什麼區別?
- 22. `{}`和`[]`有什麼區別?
- 23. JavaScript和=== ===有什麼區別?
- 24. difftime和' - '有什麼區別?
- 25. =和==有什麼區別?
- 26. xtype和別名有什麼區別?
- 27. Mixpanel:識別()和people.identify()有什麼區別?
- 28. 有什麼區別
- 29. 有什麼區別
- 30. 有什麼區別?
我不知道如果我理解你的問題,但我認爲這是在文檔中很清楚:「 QImage針對I/O,直接像素訪問和操作進行設計和優化,而QPixmap則針對屏幕上的圖像進行設計和優化。「 http://doc.qt.nokia.com/latest/qpixmap.html#details – cgmb 2012-04-25 00:45:20
耶!我已經發現了它,但不太明白,例如,針對I/O進行了優化並針對顯示進行了優化,這是差異平臺上顯示的picutre差異嗎? ..你能幫我做一個步驟來解釋..謝謝.. – 2012-04-25 00:50:04
我仍然不是100%確定我知道你的意思,但如果你使用QWidgets,你可以在QLabel中顯示它。如果你使用的是QGraphicsView,你可以在QGraphicsPixmapItem中顯示它。如果您使用的是QML,Image元素將爲您處理所有事情。 – cgmb 2012-04-25 01:17:31