翻转位图但保留原始文件大小

时间:2015-10-16 21:48:24

标签: c# image bitmap filesize

我在修改BMP文件后需要相同的文件大小,但是当我尝试翻转它时,生成的文件的文件大小会发生变化。

Bitmap pic = new Bitmap(input);
pic.RotateFlip(RotateFlipType.Rotate180FlipX);
pic.Save("test.bmp", ImageFormat.Bmp);

有什么建议吗?

1 个答案:

答案 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

相关问题