保存的位图大于我读取的位图C#

时间:2011-12-18 18:42:43

标签: c# bitmap

实际上,创建的位图的文件大小大于输入位图。我打开了创建的位图,它看起来与我输入的完全不同。那是为什么?

我通过FileStream读取位图,然后将其内容写入位图对象。接下来我将其作为位图文件写入硬盘。我无法弄清楚为什么输出位图大于输入位图。有人可以帮助我。

3 个答案:

答案 0 :(得分:2)

默认情况下,

Bitmap.Save (Image.Save)会以PNG格式保存图片。

如果您致电Save with an ImageFormat value,则应获取位图。

b.Save("test.bmp", ImageFormat.Bmp);

答案 1 :(得分:1)

创建位图文件时,通常会在每行中添加填充以确保每行是4个字节的倍数。将位图文件读入FileStream时,也会读取填充。

这可能意味着FileStream大于预期,当您将其写入位图时,它将显示意外行为,因为当您将其写入新的Bitmap时,它会将填充视为您的图像数据。

答案 2 :(得分:0)

抱歉,我不太了解你的问题。但你这样试过吗?

private System.Drawing.Bitmap readfromFile(string filename)
    {
        FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
        byte[] bytes = new byte[fs.Length];
        fs.Read(bytes, 0, Convert.ToInt32(fs.Length));
        MemoryStream ms = new MemoryStream(bytes);
        System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(ms);
        return bmp;
    }

并保存如下:

System.Drawing.Bitmap bmp = readfromFile("xxxx --- Path");
                bmp.Save("test.bmp", ImageFormat.Bmp);

我试过了,它总是为我返回相同的图像。