实际上,创建的位图的文件大小大于输入位图。我打开了创建的位图,它看起来与我输入的完全不同。那是为什么?
我通过FileStream读取位图,然后将其内容写入位图对象。接下来我将其作为位图文件写入硬盘。我无法弄清楚为什么输出位图大于输入位图。有人可以帮助我。
答案 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);
我试过了,它总是为我返回相同的图像。