【发布时间】:2011-12-01 17:55:30
【问题描述】:
我正在尝试编写一个旨在将 .bmp 文件转换为二进制文件的 C# 程序。 该文件为 16x16 像素。每个黑色像素代表一个二进制,因此数字 10 将是 █[]█[][][][][]
我遇到的问题是我的代码无法识别黑色像素,因此输出始终为零。
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。
-
您到底为什么想要
bools 数组中的数据? (只是好奇) -
至少有一个错误是您从 1 而不是 0 开始循环。
标签: c# bitmap barcode getpixel