用c#编写一个程序读取一张bmp图片的数据并转化为灰度图保存到文件中
2个回答
展开全部
读取本地图片地址:
Image img = Bitmap.FromFile("文件地址");
转换为 Bitmap 对象:
Bitmap bmpobj = (Bitmap)img;
转换为灰度图片(传入刚才转换为 Bitmap 的对象,返回值为转换后的灰度图片对象):
public Bitmap GrayByPixels(Bitmap bmpobj)
{
for (int i = 0; i < bmpobj.Height; i++)
{
for (int j = 0; j < bmpobj.Width; j++)
{
int tmpValue = GetGrayNumColor(bmpobj.GetPixel(j, i));
bmpobj.SetPixel(j, i, Color.FromArgb(tmpValue, tmpValue, tmpValue));
}
}
return bmpobj;
}
这个是用来计算灰度值的私有方法:
private int GetGrayNumColor(System.Drawing.Color posClr)
{
return (posClr.R * 19595 + posClr.G * 38469 + posClr.B * 7472) >> 16;
}
将返回的对象转换为 Image 对象:
Image img = (Image)bmpobj;
将 img 保存到硬盘:
img.Save("要保存路径与文件名");
Image img = Bitmap.FromFile("文件地址");
转换为 Bitmap 对象:
Bitmap bmpobj = (Bitmap)img;
转换为灰度图片(传入刚才转换为 Bitmap 的对象,返回值为转换后的灰度图片对象):
public Bitmap GrayByPixels(Bitmap bmpobj)
{
for (int i = 0; i < bmpobj.Height; i++)
{
for (int j = 0; j < bmpobj.Width; j++)
{
int tmpValue = GetGrayNumColor(bmpobj.GetPixel(j, i));
bmpobj.SetPixel(j, i, Color.FromArgb(tmpValue, tmpValue, tmpValue));
}
}
return bmpobj;
}
这个是用来计算灰度值的私有方法:
private int GetGrayNumColor(System.Drawing.Color posClr)
{
return (posClr.R * 19595 + posClr.G * 38469 + posClr.B * 7472) >> 16;
}
将返回的对象转换为 Image 对象:
Image img = (Image)bmpobj;
将 img 保存到硬盘:
img.Save("要保存路径与文件名");
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询