1.byte与bitmap相互转换
//将byte流转换为bitmap
byte[] signature = item.ToArray();
MemoryStream ms1 = new MemoryStream(signature);
Bitmap bm = (Bitmap)Image.FromStream(ms1);
ms1.Close();
//图片二值化处理方法
var nbm = binaryzation(bm);
MemoryStream ms = new MemoryStream();
nbm.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
var nSignature = ms.ToArray();
ms.Close();
2.图片二值化处理
public static Bitmap binaryzation(Bitmap bitmap)
{
//得到图形的宽度和长度
int width = bitmap.Width;
int height = bitmap.Height;
//创建二值化图像
Bitmap binarymap = new Bitmap(bitmap);
//依次循环,对图像的像素进行处理
for (int i = 0; i < width; i++)
{
for (int j = 0; j < height; j++)
{
//得到当前像素
int col = binarymap.GetPixel(i, j).ToArgb();
var alpha = (int)(col & 0xFF000000);
//得到图像的像素RGB blue0-8位,green9-16位,red17-24位
int red = (col & 0x00FF0000) >> 16;
int green = (col & 0x0000FF00) >> 8;
int blue = (col & 0x000000FF);
// 用灰度值公式X = 0.3×R+0.59×G+0.11×B计算出X代替原来的RGB
int gray = (int)((float)red * 0.3 + (float)green * 0.59 +
(float)blue * 0.11);
//对图像进行二值化处理
if (gray <= 100)
{
gray = 0;
}
else
{
gray = 255;
}
// 新的ARGB
int newColor = alpha | (gray << 16) | (gray << 8) | gray;
//设置新图像的当前像素值
binarymap.SetPixel(i, j, Color.FromArgb(newColor));
}
}
return binarymap;
}