我有PNG或BMP格式的图像。我希望在将其压缩为jpeg 而不保存jpeg 之后找出该图像的文件大小。
到目前为止,我是通过以下方式完成的:
frameNormal.Save("temp.jpg", ImageFormat.Jpeg);
tempFile = new FileInfo("temp.jpg");
filesizeJPG = tempFile.Length;
但由于磁盘访问速度慢,程序耗时太长。 有没有办法计算新创建的jpeg的文件大小?就像在内存中转换PNG并读取大小......
非常感谢任何帮助: - )
答案 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"