我在修改BMP文件后需要相同的文件大小,但是当我尝试翻转它时,生成的文件的文件大小会发生变化。
Bitmap pic = new Bitmap(input);
pic.RotateFlip(RotateFlipType.Rotate180FlipX);
pic.Save("test.bmp", ImageFormat.Bmp);
有什么建议吗?
答案 0 :(得分:3)
问题是,原始版本是16bpp,输出是32bpp。位图自动转换为32bpp,因此您只需将其转换回来(或使用一些库,在文件读取时不会自动执行此转换):
Bitmap pic = new Bitmap("example.bmp");
Bitmap pic2 = new Bitmap(pic.Width, pic.Height, PixelFormat.Format16bppRgb555);
for (int x = 0; x < pic.Width; ++x)
{
for (int y = 0; y < pic.Height; ++y)
{
pic2.SetPixel(x, y, pic.GetPixel(x, y));
}
}
pic2.RotateFlip(RotateFlipType.Rotate180FlipX);
pic2.Save("test.bmp", ImageFormat.Bmp);
说出发生的事情的最好方法是使用十六进制查看器查看文件,bmp格式已有详细记录:https://en.wikipedia.org/wiki/BMP_file_format