日期:2014-05-17 浏览次数:20951 次
//打开图片,并保存为位图
Bitmap thismap= (Bitmap)Image.FromFile("你的图片文件名");
Rectangle rect = new Rectangle(0, 0, thisMap.Width, thisMap.Height);
BitmapData bmpData = thisMap.LockBits(rect, ImageLockMode.ReadWrite, thisMap.PixelFormat);
byte temp = 0;
unsafe
{
//运用指针来处理图片
byte* ptr = (byte*)(bmpData.Scan0);
for (int i = 0; i < bmpData.Height; i++)
{
for (int j = 0; j < bmpData.Width; j++)
{
temp = (byte)(0.299 * ptr[2] + 0.587 * ptr[1] + 0.114 * ptr[0]);//灰度化公式,方法大致有三种,这里用的是加权平均法
ptr[0] = ptr[1] = ptr[2] = temp;
ptr += 4;//这里的4,是指每个像素的字节数
}
ptr += bmpData.Stride - bmpData.Width * 4;//偏移量
}
}
thisMap.UnlockBits(bmpData);
&