2017-09-17 73 views
1

我的應用程序需要處理巨大圖像(> 1 GB)。我的出發點是安裝QT5時可以在widget文件夾中找到的圖像查看器示例。這個例子的問題是,似乎不適合操縱像我需要處理的巨大圖像。放大和縮小需要永久更新,因此用戶體驗不夠好。將巨大的圖像加載到QT窗口中,並且能夠放大和縮小圖像

我需要的東西就像Windows照片應用程序。加載圖片可能需要很長時間,但一旦完成,您可以非常快地放大和縮小圖片。但我需要用C++和QT構建這樣的應用程序,以便以後我可以對像素進行子計算。

任何人都知道我可以看看構建這樣一個應用程序的任何示例,即通過QT庫的圖像加載器,以便我可以放大和縮小這些圖像順利?

在此先感謝

回答

0

你可以嘗試使用QGraphicsArea嗎?

找到一些方法可以將圖片分成小部分。然後,每當圖形區域的視口改變時,只將可見方塊流入圖形區域。

0

真正的應用程序處理這種方式是混合了平鋪和mip映射。

使用Mip映射技術上被推擠的圖像的較低分辨率的版本到未使用的空間的圖像中,或與其相鄰,但這個想法是緩存2米分辨率的圖像的每一個的功率。一步使用分辨率並插值像素值。

平鋪是指存儲圖像不是作爲一個緩衝或掃描線,但掃描線,而矩形塊。這改善了局部性;從1000個掃描線部分採樣幾個1000像素會造成緩存中的垃圾。

你可以調整它,渲染較低分辨率的版本,如果你沒有管理你想要的幀率。而且可能還有其他更奇特的方式來獲得極致的表現。

我不知道的一個平凡的方式在Qt來做到這一點。

0

通常有處理大文件你可以讀文件到一個緩衝區,並把它分割矩形圖形,然後加載和查看他們,即使是較大的文件,你可以創建一個縮略圖將有更多像許多解決方案處理算法,以減少文件大小和保持圖片質量。

QGraphicsview和一組圖像瓦片,視圖處理所有的滾動和世界COORDS爲您服務。
那麼你就必須要麼預先砍圖像轉換成瓦片提前或在飛行

拉圖像數據的部分見this問題找到更多關於處理紋理QOpenGLTexture大文件。