我正在尝试编写一个旨在将.bmp文件转换为二进制文件的C#程序。 该文件是16x16像素。每个黑色像素代表一个二进制的数字,因此数字10会是█[]█[] [] [] [] [] []将.bmp文件解码为二进制
我遇到的问题是我的代码不能识别黑色像素,所以输出始终为零。
public Bitmap imgToDecode;
private void button2_Click(object sender, EventArgs e)
{
int i = (imgToDecode.Height * imgToDecode.Width);
bool[] pixData = new bool[i];
int p = 0;
for (int k = 1; k < imgToDecode.Height; k++)
{
for (int m = 1; m < imgToDecode.Width; m++)
{
if (imgToDecode.GetPixel(m, k) == Color.Black)
{
pixData[p] = true;
}
else
{
pixData[p] = false;
}
p++;
}
}
for (int n = 0; n < pixData.Length; n++)
{
textBox2.Text = (textBox2.Text + (Convert.ToInt32(pixData[n])));
}
}
如果有人有一个想法,为什么输出为0,他们可以请帮助我。也欢迎任何改进代码的方法。
你检查什么.GetPixel()将返回?也许你的源图像中的黑色实际上是非黑色的,所以像素可能是255,255,254,而color.black是255,255,255。 –
为什么在地球上你想要一个'bool'数组中的数据? (只是好奇) – Cameron
至少有一个错误是你开始循环在1而不是0. –