Сжатие файлов JPG до определенного размера в C#

Пример Оптимизация уровня сжатия JPEG и файла размер в 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;
}

Источник: http://csharphelper.com/blog/2016/08/compress-jpg-files-to-a-certain-size-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector