代碼
Argb32Image,GrayscaleImage, ImageU8, Rgb24Image是UnmanagedImage<T>的四個實作。對于具體的圖像類,可以直接使用指針進行操作,也可以通過索引器和疊代器進行操作。直接通過指針操作的性能大概是後者的4倍。通過疊代器進行操作不用考慮指針越界問題。通過指針和索引器進行操作需自行判斷指針越界的問題。
這幾個基本類和Bitmap之間的轉換很簡單高效,如:
Rgb24Image rgb24 = new Rgb24Image(map);
Bitmap to = rgb24.ToBitmap();
使用這幾個類進行圖像處理,性能逼近C/C++代碼。且使用的是非托管記憶體,又實作了Dispose模式,不會發生記憶體洩漏。想要及時釋放記憶體,Dispose一下即可。
==================================
在此挑戰一下,哪位兄弟能用C#寫出性能更高的代碼?小弟奉上銀鱗胸甲一件!
本文轉自xiaotie部落格園部落格,原文連結http://www.cnblogs.com/xiaotie/archive/2010/03/19/1689747.html如需轉載請自行聯系原作者
xiaotie 集異璧實驗室(GEBLAB)