成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

利用C#指針進行圖像操作

開發 后端
提及.NET中的C#指針操作,很多人并不是很了解,甚至還不知道有這么個東西。本文將為大家講解如何利用C#指針進行圖像操作。

由于C#指針操作屬于unsafe操作,所以很多人對unsafe使用起來都很謹慎

其實所謂不安全代碼,其實是不受控于CLR控制下的托管執行,相當于CLR領導下的部分區域自治,當然CLR也不會去關心不安全代碼的內存分配和回收

費話少說,先體驗一下適當的指針操作帶來的性能提升。

平時我們通過GDI+操作稍大點圖片象素時,都會有一種瀕臨崩潰的感覺,我們轉下用指針操作。

1   Bitmap map = new Bitmap(path);
 2   // 將圖片位圖區域進行鎖定
 3   BitmapData mapdata = map.LockBits(new Rectangle(0, 0, map.Width, map.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
 4   unsafe
 5   {
 6       byte* pixpoint;
 7       int newpoint;
 8
 9       for (int i = 0; i < map.Width; i++)
10       {
11           for (int j = 0; j < map.Height; j++)
12           {
13               // 位圖結構存在一個字節對齊問題。     
14               pixpoint = (byte*)mapdata.Scan0; +i * 3 + j * mapdata.Stride;
15               newpoint = (*pixpoint * 11 + *(pixpoint + 1) * 59 + *(pixpoint + 2) * 30) / 100;
16               *(pixpoint++) = (byte)newpoint;
17               *(pixpoint++) = (byte)newpoint;
18               *(pixpoint++) = (byte)newpoint;
19
20               //  非指針操作
21               //  Color pxcl=map.GetPixel(i, j);
22               // map.SetPixel(i, j, (pxcl.R * 11 + pxcl.G * 59 + pxcl * 30) / 100);
23           }
24       }
25   }
26   // 將位圖內存區域進行解鎖
27   map.UnlockBits(mapdata);
28   map.Dispose();

比較GDI+使用的GetPixel/SetPixel,讓你立馬感到這個世界多么美妙

再來一個中值濾波的操作

10     byte s;
11     byte[] p = new byte[9];
12     int i, j;
13     int x, y;
14     int Stride;
15     unsafe
16     {
17         byte* point = (byte*)this.ImageData.Scan0;
18         Stride = this.ImageData.Stride;
19         point = point + 3 + this.ImageData.Stride;
20         for (i = 0; i < this.ImageData.Height - 1; i++)
21         {
22             for (j = 0; j < this.ImageData.Width - 1; j++)
23             {
24                 p[0] = *(point - Stride - 1);
25                 p[1] = *(point - Stride + 2);
26                 p[2] = *(point - Stride + 5);
27                 p[3] = *(point - 1);
28                 p[4] = *(point + 2);
29                 p[5] = *(point + 5);
30                 p[6] = *(point + Stride - 1);
31                 p[7] = *(point + Stride + 2);
32                 p[8] = *(point + Stride + 5);
33                 for (x = 0; x < 5; x++)
34                 {
35                     for (y = x + 1; y < 9; y++)
36                     {
37                         if (p[x] > p[y])
38                         {
39                             s = p[x];
40                             p[x] = p[y];
41                             p[y] = s;
42                         }
43                     }
44                 }
45                  *point = p[4];
46                 *(point - 1) = p[4];
47                 *(point - 2) = p[4];
48                   point += 3;
49
50             }
51             point += Stride - this.ImageData.Width * 3;
52         }
53     }  
54 }
55

【編輯推薦】

  1. 你知道C#排序的編寫及性能嗎?
  2. C#中用鼠標移動頁面功能的實現
  3. C#實例講解二叉樹原理與實現
  4. C# 2010命名和可選參數的新特性
  5. C# 4.0新特性dynamic作用淺析

責任編輯:彭凡 來源: cnblogs
相關推薦

2009-08-03 17:12:40

C#指針操作

2009-08-20 10:25:37

C#操作內存

2009-08-18 17:29:02

C#使用指針

2009-08-18 17:37:57

C#固定指針

2009-08-13 15:48:57

C#指針

2009-07-31 15:10:21

C#函數指針數組C#數組

2009-08-21 15:16:23

C#使用指針

2009-08-19 16:50:32

Visual C#C#語言特性

2009-08-31 15:02:22

C#解析結構體指針

2009-09-16 09:00:15

C#數組C#指針

2009-09-27 11:14:09

C#數組

2024-09-18 07:10:00

ImageSharpC#開發

2009-08-17 13:34:02

C#異步操作

2009-08-12 15:43:02

操作C# Datase

2009-08-28 15:52:23

C#利用sharpzi

2009-08-28 16:08:28

C#利用資源文件

2009-09-08 16:51:50

C#鼠標拖動

2009-08-28 15:32:39

C#利用WMI獲取數據

2009-07-31 18:28:46

實現C#顯示圖像

2009-09-07 18:08:25

C#鼠標指針
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲电影第三页 | 国产中文字幕网 | 欧美精品成人一区二区三区四区 | 成人免费久久 | 性国产xxxx乳高跟 | 欧区一欧区二欧区三免费 | 亚洲精品久久久9婷婷中文字幕 | 中文字幕第5页 | 香蕉久久a毛片 | 99久热在线精品视频观看 | 国产成人在线一区二区 | 免费观看日韩精品 | 国产福利在线小视频 | 精品久久久久久久久久久久久久久久久 | 中文字幕av第一页 | 神马影院一区二区三区 | 黄网站在线观看 | 精品一二三区在线观看 | 久久久久国产精品 | 欧美福利视频 | 久久午夜视频 | 精品日韩一区 | 女人夜夜春 | 国产综合精品一区二区三区 | 日韩 国产 在线 | 亚洲精品视频一区 | 日本又色又爽又黄又高潮 | 黑人精品欧美一区二区蜜桃 | 午夜在线免费观看视频 | 国产精品一区二区无线 | 久久久久亚洲精品国产 | 国产精品久久久久久影院8一贰佰 | 欧美成人猛片aaaaaaa | 天堂成人国产精品一区 | 亚洲免费网 | 亚洲精品一 | 国产精品久久久久久久久免费软件 | 久久99国产精品 | 免费看黄色国产 | 一级毛片免费视频观看 | 精品永久 |