當前位置:編程學習大全網 - 編程軟體 - 在vb.net環境下圖像處理,用什麽建立3D

在vb.net環境下圖像處理,用什麽建立3D

首先,還是談談圖像像素時數據獲取方面吧,.net中的圖像相關類基本上都是基於GDI+的,因此,圖像數據的獲取其實也是調用GDI+的壹些函數。這個函數就是LockBits,在vb.net中彩色圖像數據的快速獲取 壹文中,我們是調用了Marshal.Copy把LockBits鎖定的內存數據拷貝到數據中,然後對數組中的值進行處理。這樣做主要的原因是VB.NET不好直接訪問內存(Marshal.ReadByte之類的函數不適合用於大型的循環中)。那麽,這就造成了2個不好的事情,第壹:在同壹時間需要2倍於圖像數據量的內存,第二:內存數據拷貝到數據,以及處理後再把數組的數據拷貝會內存中都是會減低速度的。作為壹種改進,我們應該充分利用LockBits的功能。LockBits中的LockMode中有壹種模式為ImageLockMode.UserInputBuffer,該模式下需要用戶先申請內存,然後在把圖像數據按照相關格式填充如這個內存中。這樣,就可以先定義個數組,然後把圖像數據填充到這個數組中,就避免了來回拷貝的耗時了,簡單示例代碼如下:

Dim BmpData As New BitmapData

Stride = ((Bmp.Width * 3 + 3) And &HFFFFFFFC)

Dim PixleValue(Stride * Bmp.Height) As Byte

Dim Hanlde As GCHandle = GCHandle.Alloc(PixleValue, GCHandleType.Pinned)

BmpData.Scan0 = Hanlde.AddrOfPinnedObject()

  • 上一篇:木工機床與金屬切削機床相比有什麽特點?
  • 下一篇:貝殼掘金怎麽玩
  • copyright 2024編程學習大全網