保存的位图比c#中读取的位图大

本文关键字:位图 读取 保存 | 更新日期: 2023-09-27 18:18:18

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

我通过FileStream读取位图,然后将其内容写入位图对象。接下来我将其作为位图文件写入硬盘。我不明白为什么输出位图比输入位图大。

保存的位图比c#中读取的位图大

位图。Save (image .Save)默认将图像保存为PNG格式。

如果你使用ImageFormat值调用Save,你应该得到你的位图。

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

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

这可能意味着FileStream比预期的要大,当你把它写到位图时,它会显示意想不到的行为,因为当你把它写到一个新的位图时,它会把填充当作你的图像数据。

对不起,我没有很好地理解你的问题。但你试过这样吗?

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);

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