【发布时间】:2016-08-07 13:51:23
【问题描述】:
有人可以向我解释为什么将 PNG 图像中的流写回另一个 PNG 文件会增加最终输出的大小吗?
原始文件:大小 (28.6 KB),磁盘大小 (32.0 KB)
输出文件:大小 (32.1 KB),磁盘大小 (36.0 KB)。
执行此操作的代码非常简单:
private void button1_Click(object sender, EventArgs e)
{
var result = openFileDialog1.ShowDialog();
if (result == DialogResult.OK)
{
var file = openFileDialog1.FileName;
var stream = new FileStream(file, FileMode.Open);
var newImg = Image.FromStream(stream);
newImg.Save("newPNG.png", ImageFormat.Png);
stream.Close();
}
}
我怎样才能避免这种情况?我希望最终图像的大小与原始图像完全相同。
LE:如果有人想尝试,我上传了原始图像。 cat image
【问题讨论】:
-
感谢您的评论。我无法复制它的原因是我正在保存的项目只能接收一个 Stream 作为图像的输入。
-
所以你有
File.WriteAllBytes。我建议您阅读其他问答:stackoverflow.com/questions/221925/… -
我同意第一条评论。您不需要对 png 文件进行解码和重新编码。