我正在嘗試編寫一個旨在將.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. –