日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【GUI开发】图像处理类软件的浏览功能实现模型

發布時間:2023/12/10 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【GUI开发】图像处理类软件的浏览功能实现模型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

圖像處理軟件包括但不限于:
圖片瀏覽器,2D地圖瀏覽器、圖片編輯器等軟件。

為了處理大分辨率圖片,一般采用GDAL加載圖像,GDAL可以動態加載圖像的一部分,可以建立圖像金字塔,優化加載速度。

一般的圖像處理軟件都需要對加載的圖像進行放大、縮小、平移操作。首先明確:

  • 放大是指圖像細節增加,可見范圍減少的一種瀏覽方式。英文名:Zoom In。
  • 縮小是指圖像細節減少,可見范圍增加的一種瀏覽方式。英文名:Zoom Out。

實現

下面介紹如何實現。
編寫代碼前,需要建立圖像瀏覽所使用的數學模型。如下圖所示:

其中,顯示窗口是指用于繪制當前瀏覽內容的窗口,觀察區域是指,當前顯示窗口中的內容對應于原圖中內容的范圍。二者之間必須滿足:顯示窗口的長寬比和觀察區域的長寬比相同,單位為像素。

利用上述模型,就可以編寫對應的代碼了:

  • 圖像加載顯示:使用GDAL在原圖中以觀察區域矩形為范圍參數,讀取原圖中對應的像素數據,輸出大小為顯示窗口的大小;
  • 放大瀏覽:顯示窗口大小不變,縮小觀察區域。觀察區域縮小的中心點可以根據需求來設置;
  • 縮小瀏覽:顯示窗口大小不變,放大觀察區域。觀察區域放大的中心點可以根據需求來設置;
  • 平移瀏覽:顯示窗口大小不變,觀察區域大小不變,但是根據鼠標拖動的偏移量修改觀察區域的位置。

同樣可以方便的計算出所謂的縮放比例了,即

縮放比例 = 顯示窗口的寬 / 觀察區域的寬 = 顯示窗口的長 / 觀察區域的長
長度單位:像素

Zoom In、Zoom Out的解釋

我們知道Z軸是垂直于電腦屏幕的,指向屏幕面前的人的方向為外,指向屏幕內部的方向為內。
所以,Zoom In是指人靠近屏幕去看屏幕上的內容,顯然是一種細節增加、范圍減少的放大操作。
Zoom Out是指人遠離屏幕去看屏幕上的內容,這是一種細節減少。范圍增加的縮小操作。

結語

除了文中介紹了實現方案外,還有其他方案。比如將觀察區域始終設置為和圖像相同大小,固定不變,通過改變顯示窗口,正確地說應該是改變繪制緩存的大小來實現放大縮小。但是可以推斷,對于加載大圖來說,如果在這種情況下縮小圖片,或占用內存過大,或申請不到內存,速度上也會變慢。

使用文中介紹的方案,如何實現圖像旋轉的需求呢?這個就留給讀者思考自己思考了。


最近創建了一個公眾號,主要是Qt相關。如果您覺得文章有用,可以關注一下。

總結

以上是生活随笔為你收集整理的【GUI开发】图像处理类软件的浏览功能实现模型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。