Сжатие файлов JPG до определенного размера в C#
Пример
Если вы установили максимальный размер файла и нажмите «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; }