打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
在c#中用指针操作图片像素点

在Bitmap类中有两个函数SetPixel,GetPixel,分别用来设置或读取图片中指定点的颜色(这里发现了VS的一个错误,SetPixel的文档说明写的是“获取颜色”??)。

      当要对一幅图进行相当操作时,用这两个函数,性能上就不尽人意了……这时就可以考虑用指针来对性能进行提升。

      这里介绍两种方法:

      一、

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
1public struct Pixel
 2{
   public byte B;         //
   public byte G;        //
   public byte R;        //
 6}
 8public void ReadColor()
 9{
   Bitmap b=new Bitmap('d:\\a.bmp');
   BitmapData bData = b.LockBits(new Rectangle(0, 0, b.Width, b.Height), ImageLockMode.ReadWrite , PixelFormat.Format24bppRgb);
   unsafe
   {
           Pixel* p = null;
           for (int x = 0; x < b.width;="" x++)="">
           {
               p = (Pixel*)bData.Scan0 + x * b.Height;
               for (int y = 0; y < b.height;="" y++)="">
               {
                       int R = p->R;
                       int G = p->G;
                       int B = p->B;
                       //这里获取颜色分量的各个值,同样在这里还可以对其进行赋值
               }
           }
   }
   b.UnlockBits(bData);
28}

  二:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//这里的x,y参数,指的是图像中像素点的x,y坐标
 pubic void ReadColor(int x,int y)
 {    
    Bitmap b = new Bitmap('d:\\a.bmp');
   BitmapData bData = b.LockBits(new Rectangle(0, 0, b.Width, b.Height), ImageLockMode.ReadWrite,
PixelFormat.Format24bppRgb);
            unsafe {
            byte* color = (byte*)bData.Scan0 + x * 3 + y *       Data.Stride;
                int R = *(color + 2);
                int G = *(color + 1);
                int B = *color;
                //同样在这里也可以对其行进修改
           }  
            b.UnlockBits(bData);
}

  

通过以上的代码可以很容易的知道怎么指针来操作像素点。

这里要说明的是,第一种方法中的x,y不能和图像中坐标进行对应(特别要注意),如果对一幅图的每个点都进行同样的操作可以考虑第一种方法。但要对某些特定坐标上的点进行操作那就只能用第二种方法了。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C#中保存GIF文件后透明背景问题的一个解决方法
【C#】加快Bitmap的访问速度
C#图片处理之:亮度和对比度的校正
C#图片处理常见方法性能比较
C#实现图像骨架提取zhang
边缘检测类(包括Roberts, Sobel, Prewitt, Kirsch等算子的边缘检测算法)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服