需求
图片需要批量转成灰度,word转换效果不大理想,代码批量处理一下
方法
public Bitmap ImageGrayscale(string imagePath)
{
Bitmap image = new Bitmap(imagePath);
Bitmap bitmap = new Bitmap(image.Width, image.Height);
Color pixel;
for (int x = 0; x < image.Width; x++)
{
for (int y = 0; y < image.Height; y++)
{
pixel = image.GetPixel(x, y);
int r, g, b, Result = 0;
r = pixel.R;
g = pixel.G;
b = pixel.B;
int iType = 2;
switch (iType)
{
case 0://平均值法
Result = ((r + g + b) / 3);
break;
case 1://最大值法
Result = r > g ? r : g;
Result = Result > b ? Result : b;
break;
case 2://加权平均值法
Result = ((int)(0.7 * r) + (int)(0.2 * g) + (int)(0.1 * b));
break;
}
//pixel.A
//alpha 分量指定颜色的透明度:0 是完全透明的,255 是完全不透明的。 同样,值为 A 255 表示不透明颜色。 从 A 1 到 254 的值表示半透明颜色。 接近 A 255 时,颜色变得更加不透明。
bitmap.SetPixel(x, y, Color.FromArgb(pixel.A, Result, Result, Result));
}
}
return bitmap;
}