Сжатие файлов JPG до определенного размера в C#
Пример показывает, как сохранить JPG-файл с различными уровнями сжатия. Использование меньшего уровня делает результирующий файл меньшим, но вносит больше ошибок в изображение.
Если вы установили максимальный размер файла и нажмите «Go», эта программа выбирает уровень сжатия, который делает файл не больше этого размера. Следующий код сохраняет изображение не более указанного размера, если это возможно.
// Сохраните файл с указанным максимальным размером файла.
// Возвращаем уровень сжатия.
public static int SaveJpgAtFileSize(Image image,
string file_name, long max_size)
{
for (int level = 100; level > 5; level -= 5)
{
// Попробуйте сохранить на этом уровне сжатия.
SaveJpg(image, file_name, level);
// Если файл достаточно мал, мы закончили.
if (GetFileSize(file_name) <= max_size) return level;
}
// Оставайтесь на уровне 5.
return 5;
}
Этот код просто пытается уменьшить уровни сжатия, начиная с 100, пока не найдет тот, который сжимает файл настолько, чтобы он соответствовал допустимому размеру.
Следующий вспомогательный метод GetFileSize просто возвращает размер файла.
// Возвращает размер файла.
public static long GetFileSize(string file_name)
{
return new FileInfo(file_name).Length;
}
