将位图转换为C#中的二进制数据
本文关键字:二进制 数据 位图 转换 | 更新日期: 2023-09-27 18:24:21
现在我更喜欢位图及其转换。这次我想把我的位图图像转换成二进制值(1,1,0,0,…,0,1,1)
在谷歌搜索的帮助下,我尝试了下面的代码片段。
string bmpFilePath= @"C:'Sample.bmp";
Bitmap bmp = new Bitmap(bmpFilePath);
short[,] array = new short[bmp.Height, bmp.Width];
Color color;
int binaryVal = 0;
string strBinaryData = string.Empty();
for (int x = 0; x < bmp.Width; x++)
{
for (int y = 0; y < bmp.Height; y++)
{
color = bmp.GetPixel(x, y);
binaryVal = Color.White.ToArgb() == color.ToArgb() ? (short)1 : (short)0;
strBinaryData += binaryVal.ToString();
}
}
//StrBinaryData contains the String of binary values.
我正在使用单色位图图像来获取二进制数据。代码对我来说看起来很完美,但当我试图用API打印图像时,我看不到确切的图像。
我想确认一下,这上面的代码是否足够好。如果是的话,我可能在进一步处理二进制数据时犯了错误。
请帮我这么做。
获取位图的二进制数据的原因:我有一个API可以使用,它期望图像的二进制数据作为输入。现在我得到了一些错误的结果。只需要检查输入是否正确?
好的,首先是挑剔的东西:
- 你不应该在c:''中抛出文件,尽管那可能只是我的宠物脾气
- 是
string.Empty
,而不是string.Empty()
- 使用StringBuilder而不是字符串可能会更快。一组简单的优化在10x10位图上运行1000000次,从平均423ms变为平均120ms。其他优化可能也会加快速度
现在最重要的是:
代码开始从左到右读取列,然后读取每列中的每一行。最终结果是,生成的11100010101010....
数据看起来像逆时针旋转90度的图片。
希望这能为你指明正确的方向。