将 Png 转换为 Bmp 和位图数组
Converting Png to Bmp and bitmap array
我在 SO 中搜索我的问题解决方案,但没有找到(也许这不是问题,而且工作正常,只是我要转储以获取它)
我有 BMP 文件,我尝试将其转换为位图数组。一切都很好,但我得到一个看起来很奇怪的输出文件。该文件是 16x32,所以我应该得到 512 位。最终图像是黑白的,所以我应该有 512 x 3(3 色位)像素 - 1536 像素,值为 0 或 255,但得到 1590 像素。这 54 个像素的值与 0 或 255 不同,为什么?该值是多少,用于什么 bmp 文件?
代码:`
long time = 0;
Stopwatch watch = new Stopwatch();
watch.Start();
Image img = Image.FromFile("test.png");
byte[] data;
MemoryStream ms = new MemoryStream();
img.Save(ms, ImageFormat.Bmp);
data = ms.ToArray();
watch.Stop();
time = watch.ElapsedTicks;
Console.WriteLine(time);
FileStream file = new FileStream("test.txt", FileMode.Create, FileAccess.ReadWrite);
StreamWriter writer = new StreamWriter(file);
foreach (byte b in data)
{
writer.WriteLine(b);
}
writer.Close();
file.Close();
Console.ReadKey();`
我知道代码不好读,但仅用于某些测试
我会说它是文件header,就像 TaW 已经指出的那样。根据这个网站 http://www.fastgraph.com/help/bmp_header_format.html BMP header 大小是 54 字节。如果您查看偏移量 18 和 22,您应该会看到图片的宽度和高度 (16, 32)。
我在 SO 中搜索我的问题解决方案,但没有找到(也许这不是问题,而且工作正常,只是我要转储以获取它)
我有 BMP 文件,我尝试将其转换为位图数组。一切都很好,但我得到一个看起来很奇怪的输出文件。该文件是 16x32,所以我应该得到 512 位。最终图像是黑白的,所以我应该有 512 x 3(3 色位)像素 - 1536 像素,值为 0 或 255,但得到 1590 像素。这 54 个像素的值与 0 或 255 不同,为什么?该值是多少,用于什么 bmp 文件? 代码:`
long time = 0;
Stopwatch watch = new Stopwatch();
watch.Start();
Image img = Image.FromFile("test.png");
byte[] data;
MemoryStream ms = new MemoryStream();
img.Save(ms, ImageFormat.Bmp);
data = ms.ToArray();
watch.Stop();
time = watch.ElapsedTicks;
Console.WriteLine(time);
FileStream file = new FileStream("test.txt", FileMode.Create, FileAccess.ReadWrite);
StreamWriter writer = new StreamWriter(file);
foreach (byte b in data)
{
writer.WriteLine(b);
}
writer.Close();
file.Close();
Console.ReadKey();`
我知道代码不好读,但仅用于某些测试
我会说它是文件header,就像 TaW 已经指出的那样。根据这个网站 http://www.fastgraph.com/help/bmp_header_format.html BMP header 大小是 54 字节。如果您查看偏移量 18 和 22,您应该会看到图片的宽度和高度 (16, 32)。