.NET имеет несколько библиотек декодирования / кодирования изображений, часто привязанных к определенной структуре графического интерфейса пользователя (например, в Windows Forms у вас есть System.Drawing.Image , а для WPF см. Imaging Обзор глава по MSDN).
Существуют также сторонние библиотеки, специализирующиеся на преобразовании / сжатии изображений, которые вы можете найти в Интернете (как бесплатные, так и не бесплатные)
Как правило, объем экономии, получаемый при сжатии изображения, сильно зависит от исходного формата. Если у вас уже есть фотографии в формате JPEG с нормальным сжатием (качество 85%), вы не сможете ничего сделать с точки зрения их уменьшения, за исключением изменения их размера. Если у вас есть необработанные растровые изображения (например, BMP, несжатый / TIFF с низким сжатием и т. Д.), Вы можете ожидать довольно большой экономии с большинством форматов сжатия
При выборе формата изображения учитывайте следующее:
- Фотографии и тому подобное: JPEG часто будет хорошо. Хорошая экономия при разумной потере качества
- Скриншоты и аналогичные: PNG обычно дает лучшие результаты (PNG без потерь). JPEG часто создает хорошо видимые артефакты на скриншотах
Сжатие уже сжатого изображения (т.е. PNG, JPEG и т. Д.) С помощью алгоритма сжатия общего назначения, такого как ZIP или RAR, на практике не даст вам никакой экономии. Вы можете получить файл большего размера.