翻转位图,但保持原始文件大小
本文关键字:原始 文件大小 位图 翻转 | 更新日期: 2023-09-27 18:18:01
我有一些东西在修改BMP文件后需要相同的文件大小,但是当我试图翻转它时,结果文件的文件大小发生了变化。
Bitmap pic = new Bitmap(input);
pic.RotateFlip(RotateFlipType.Rotate180FlipX);
pic.Save("test.bmp", ImageFormat.Bmp);
有什么建议吗?
问题是,原来是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