确定jpeg filesize而不实际保存jpeg

时间:2011-04-12 12:38:03

标签: c# image-processing image-manipulation jpeg

我有PNG或BMP格式的图像。我希望在将其压缩为jpeg 而不保存jpeg 之后找出该图像的文件大小。

到目前为止,我是通过以下方式完成的:

frameNormal.Save("temp.jpg", ImageFormat.Jpeg);
tempFile = new FileInfo("temp.jpg");
filesizeJPG = tempFile.Length;

但由于磁盘访问速度慢,程序耗时太长。 有没有办法计算新创建的jpeg的文件大小?就像在内存中转换PNG并读取大小......

非常感谢任何帮助: - )

3 个答案:

答案 0 :(得分:7)

您可以将图像数据写入Stream,而不是提供文件名:

using (MemoryStream mem = new MemoryStream())
{
    frameNormal.Save(mem, ImageFormat.Jpeg);
    filesizeJPG = mem.Length;
}

答案 1 :(得分:3)

你可以这样:

MemoryStream tmpMs = new MemoryStream();
frameNormal.Save(tmpMs, ImageFormat.Jpeg);
long fileSize = tmpMs.Length;

答案 2 :(得分:2)

尝试将其加载到内存中而不保存到磁盘。查看MemoryStream

此外,这个答案可能有所帮助:How to get the file size of a "System.Drawing.Image"

相关问题