在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
提及.NET的指针操作,很多人并不是很了解,甚至还不知道有这么个东东 其实所谓不安全代码,其实是不受控于CLR控制下的托管执行,相当于CLR领导下的部分区域自治,
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,让你立马感到这个世界多么美妙
1 /// <summary>
2 /// 中值滤波 3 /// </summary> 4 /// <param name="dgGrayValue"></param> 5 public void MedianFilter(int dgGrayValue) 6 { 7 // 100M 双线空间 + 50M数据库 28元/年 8 // 1G 双线空间 + 200M数据库 100元/年 9 // QQ:70975363 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 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论