如何把图片中指定的区域 进行灰度处理

解决方案 »

  1.   

    发个VB的给你
    我没时间转成C#的
        Public Shared Function GrayScale1(ByVal b As Bitmap) As Bitmap        Dim w As Integer = b.Width
            Dim h As Integer = b.Height
            Dim b1 As New Bitmap(w, h)
            For i As Integer = 0 To w - 1
                For j As Integer = 0 To h - 1
                    Dim pColor As Color = b.GetPixel(i, j)
                    Dim red As Integer = pColor.R * 0.114 + pColor.G * 0.587 + pColor.B * 0.299
                    Dim green As Integer = pColor.R * 0.114 + pColor.G * 0.587 + pColor.B * 0.299
                    Dim blue As Integer = pColor.R * 0.114 + pColor.G * 0.587 + pColor.B * 0.299
                    Dim pColor1 As Color
                    pColor1 = Color.FromArgb(red, green, blue)
                    b1.SetPixel(i, j, pColor1)
                Next
            Next
            Return b1
        End Function
      

  2.   

    算了,我转成C#的吧
    public Bitmap void GrayScale1(Bitmap b)
    {
      Int32 w=b.Width;
      Int32 h=b.Height;
      Bitmap b1=new Bitmap(w,h);
      foreach(Int32 i=0;i<=w-1;i++)
       {
         foreach(Int32 j=0;i<=h-1;j++)
          {
             Color pColor= b.GetPixel(i, j);
                    Int32 red = pColor.R * 0.114 + pColor.G * 0.587 + pColor.B * 0.299;
                    Int32 green = pColor.R * 0.114 + pColor.G * 0.587 + pColor.B * 0.299;
                    Int32 blue= pColor.R * 0.114 + pColor.G * 0.587 + pColor.B * 0.299;
                    Color pColor1;
                    pColor1 = Color.FromArgb(red, green, blue);
                    b1.SetPixel(i, j, pColor1);      }
        }
    Return b1;
    }
      

  3.   

    我想问的是用BitmapData 局部灰度处理怎么弄?,还是说弄不成
      

  4.   

    直接对bitmap的像素点进行灰度操作就好了。