определить размер файла JPEG без фактического сохранения JPEG - PullRequest
4 голосов
/ 12 апреля 2011

У меня есть изображение в формате PNG или BMP.Я хотел бы узнать размер файла этого изображения после сжатия его в JPEG без сохранения JPEG .

До сих пор я делал это следующим образом:

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

Но из-за медленного доступа к диску программа занимает слишком много времени.Есть ли способ рассчитать размер файла недавно созданного JPEG?Как преобразование PNG в памяти и чтение размера ...

Любая помощь очень ценится: -)

Ответы [ 3 ]

7 голосов
/ 12 апреля 2011

Вы можете записать данные изображения в Stream вместо указания имени файла:

using (MemoryStream mem = new MemoryStream())
{
    frameNormal.Save(mem, ImageFormat.Jpeg);
    filesizeJPG = mem.Length;
}
3 голосов
/ 12 апреля 2011

Вы можете что-то вроде этого:

MemoryStream tmpMs = new MemoryStream();
frameNormal.Save(tmpMs, ImageFormat.Jpeg);
long fileSize = tmpMs.Length;
2 голосов
/ 12 апреля 2011

Попробуйте загрузить его в память без сохранения на диск. Посмотрите вверх MemoryStream .

Кроме того, этот ответ может помочь: Как получить размер файла «System.Drawing.Image»

...