Как уменьшить размер JPG без потери качества: полное руководство
Фото весит 8 МБ, не грузится в форму и тормозит сайт — знакомо? Хорошая новость: в 90% случаев JPEG можно ужать в несколько раз, и разницу вы просто не увидите. Плохая новость: люди гонят качество на 100 и удивляются мегабайтам. Разберём по шагам, какие рычаги реально работают — от уровня качества до ресайза — и сколько именно каждый из них экономит.
Почему JPG бывает таким тяжёлым
JPEG — формат со сжатием с потерями. Он жертвует мелкими деталями, которые человеческий глаз почти не замечает, чтобы файл стал компактнее. Казалось бы, JPG должен быть лёгким по определению. Откуда тогда берутся фото на 5–10 МБ?
Причин обычно три, и они складываются:
- Слишком высокое качество. Камеры и редакторы по умолчанию сохраняют JPEG на качестве 90–100. Это «честно», но избыточно: разница между 80 и 100 на глаз не видна, а вес отличается в 2–3 раза.
- Огромное разрешение. Современный смартфон снимает кадр 4000×3000 пикселей и больше — это 12+ мегапикселей. Если потом фото показывается в посте шириной 1080 px, три четверти пикселей вы просто несёте впустую.
- Лишние данные внутри. EXIF (модель камеры, настройки, GPS-координаты), цветовые профили, превью-миниатюра — всё это сидит внутри файла и добавляет килобайты.
Главная мысль
Размер JPEG определяют четыре рычага: уровень качества, разрешение, метаданные и способ кодирования. Самый большой выигрыш почти всегда даёт ресайз, а самый частый промах — сохранение на качестве 100. Дальше разберём каждый рычаг по очереди.
Уровень качества 60–80: главный рычаг
В JPEG есть параметр quality — число от 1 до 100, которое управляет тем, насколько агрессивно формат выбрасывает детали. И вот ключевой факт, который экономит больше всего: качество 100 почти никогда не нужно.
Для веба и обычных фотографий золотая середина — качество 60–80. Снимок, сохранённый на 80, на глаз неотличим от оригинала, но весит в 2–3 раза меньше. Объяснение простое: верхние значения качества тратят гигантский объём данных на различия, которые лежат за порогом человеческого восприятия.
Где проходит граница? Ниже качества 60 на градиентах (небо, кожа, плавные переходы) и вокруг резких контуров появляются характерные «квадратики» и ореолы — артефакты блочного сжатия. Это и есть та самая «потеря качества», которой все боятся. Поэтому практическое правило такое:
- 85–80 — когда важна каждая деталь: портфолио, печать небольшого формата, превью с текстом.
- 80–70 — универсальный диапазон для сайтов и соцсетей. Лучший баланс «вес/качество».
- 70–60 — фоновые и второстепенные изображения, где экономия трафика важнее идеала.
Не пересохраняйте по кругу
JPEG теряет качество при каждом повторном сохранении — это называется потерями поколений. Открыли фото, чуть подправили, сохранили, снова открыли, снова сохранили — и артефакты копятся. Храните оригинал отдельно, а сжатую версию делайте из него один раз.
Ресайз: самый недооценённый приём
Если из всей статьи запомнить один совет — пусть это будет он. Уменьшение разрешения под реальный размер показа сокращает файл сильнее всего остального — на 80–90%.
Логика железная. Размер JPEG растёт пропорционально количеству пикселей. Кадр 4000×3000 — это 12 миллионов пикселей. Если на странице картинка показывается шириной 1200 px (то есть 1200×900 = чуть больше миллиона пикселей), то вы храните и отдаёте в браузер в десять раз больше данных, чем нужно. Эти лишние пиксели никто не увидит — экран их всё равно ужмёт при отображении.
Сначала ресайз, потом качество
Порядок имеет значение. Если сначала уменьшить разрешение до нужного, а уже потом выставить качество 75 — вы складываете оба выигрыша. Именно так фото на 6 МБ превращается в аккуратные 150–250 КБ без видимой разницы.
Какой размер ставить? Ориентируйтесь на то, где картинка реально живёт:
| Где используется | Разумная ширина | Комментарий |
|---|---|---|
| Аватар, иконка | 200–400 px | Больше просто не нужно |
| Картинка в посте / статье | 1200–1600 px | С запасом под Retina-экраны |
| Фон / hero на всю ширину | 1920–2560 px | Дальше выигрыш минимален |
| Вложение в письмо / чат | 1600–2048 px | Хватит, чтобы рассмотреть детали |
Правило простое: нет смысла хранить картинку шире, чем место, в котором она показывается (с поправкой ×2 на экраны высокой плотности). Всё, что сверх этого, — мёртвый вес.
Сжать онлайн за 30 секунд
Если нужно ужать несколько фото прямо сейчас и без возни с программами — самый быстрый путь это онлайн-конвертер. Он работает в браузере, ничего ставить не надо, а заодно можно сразу перевести JPEG в более экономичный формат.
Загрузите JPG
Перетащите файлы в окно конвертера. Можно несколько сразу.
Выберите формат и качество
WebP при качестве ~80 даёт меньший вес, чем JPEG, при той же картинке.
Скачайте результат
Готовые файлы — за пару секунд, по одному или архивом.
Уменьшите свои JPG прямо сейчас
Конвертер FormatZ переведёт тяжёлый JPEG в лёгкий WebP за пару секунд — прямо в браузере, без установки и регистрации. Самый простой способ ужать фото в разы.
Сжать JPG в WebPЕсли же вам нужен формат без потерь — например, под графику или скриншоты с текстом — пригодится конвертер JPG в PNG. А полный список преобразований всегда на странице всех форматов.
mozjpeg и jpegoptim для своих файлов
Когда нужно прогнать сотни фото или встроить сжатие в сборку сайта, в дело идут консольные утилиты. Они работают пакетно, повторяемо и выжимают из JPEG максимум.
mozjpeg — это улучшенный JPEG-энкодер от Mozilla. При том же визуальном качестве он делает файлы примерно на 5–15% меньше, чем стандартный кодировщик, за счёт трелли-квантования и продуманного progressive-кодирования. Кодирует он медленнее обычного, но для пакетной обработки это неважно. Команда:
cjpeg -quality 80 -optimize -progressive input.jpg > output.jpg
Здесь -quality 80 задаёт уровень качества, -optimize подбирает оптимальные Huffman-таблицы, а -progressive делает файл прогрессивным (об этом ниже).
jpegoptim подходит, когда нужно дожать уже готовые JPEG без перекодирования с нуля. Он оптимизирует Huffman-таблицы (это сжатие без потерь), а при желании задаёт и потолок качества. Несколько полезных вариантов:
# Без потерь: только пересборка таблиц + удаление метаданных
jpegoptim --strip-all photo.jpg
# С потолком качества 80 и прогрессивным выводом
jpegoptim --max=80 --all-progressive photo.jpg
# Ужать под лимит размера (например, 250 КБ)
jpegoptim --size=250k photo.jpg
Что выбрать
Хотите перекодировать с нуля и выжать максимум — mozjpeg (cjpeg). Нужно бережно дожать существующие файлы и снять метаданные без видимых потерь — jpegoptim. Есть ещё jpegtran (lossless-операции вроде поворота и преобразования в progressive) и guetzli от Google — он даёт компактные файлы, но работает очень медленно и требует много памяти, поэтому в реальных пайплайнах его почти не используют.
Progressive и удаление метаданных
Два приёма, которые дают не самый большой, но «бесплатный» выигрыш и улучшают восприятие.
Progressive JPEG. Обычный (baseline) JPEG загружается сверху вниз, строка за строкой. Прогрессивный кодируется иначе: сначала показывается размытая версия всей картинки целиком, которая постепенно становится чёткой. Польза двойная: на медленном соединении пользователь сразу видит, что́ грузится, а сам файл нередко оказывается чуть легче baseline-варианта. Включить можно флагом -progressive в cjpeg или --all-progressive в jpegoptim.
Удаление метаданных. Внутри JPEG почти всегда живёт EXIF — техническая информация о съёмке. Там модель камеры, выдержка, ISO и, что важнее, нередко GPS-координаты места съёмки. Эти данные:
- занимают место — десятки килобайт, особенно если есть встроенная миниатюра и цветовой профиль;
- раскрывают приватность — публикуя фото с геометкой, вы фактически сообщаете, где находитесь.
Команда jpegoptim --strip-all photo.jpg убирает всё лишнее одним движением. Для фото, которое идёт в интернет, это почти всегда правильный шаг.
Когда вместо JPEG лучше WebP или AVIF
Иногда самый эффективный способ «сжать JPG» — это перестать использовать JPEG. Формату больше 30 лет, и современные кодеки бьют его по эффективности с большим запасом.
| Формат | Размер при том же качестве | Когда брать |
|---|---|---|
| JPEG | базовый (100%) | Максимальная совместимость, нельзя менять формат |
| WebP | на 25–35% легче | Универсальный выбор для веба сегодня |
| AVIF | примерно на 50% легче | Когда нужен минимальный вес, тулинг поддерживает |
При одинаковом визуальном качестве WebP легче JPEG примерно на 25–35%, а AVIF — около 50%. Оба формата поддерживаются всеми актуальными браузерами, так что переход на них для сайта — почти всегда выигрыш по скорости загрузки и месту на диске.
Когда оставаться на JPEG? Если важна предельная совместимость (старые программы, e-mail-клиенты, госпорталы) или формат файла менять нельзя по требованию. Во всех остальных случаях для веба разумно перевести фото в WebP. А для графики, скриншотов и картинок с прозрачностью подойдёт PNG — но для фотографий он, наоборот, тяжелее JPEG, так что его берут не ради размера.
Чек-лист: что сделать прямо сейчас
Коротко, по шагам — от самого мощного приёма к деталям:
Уменьшите разрешение
До реального размера показа (×2 для Retina). Это даёт −80–90% веса.
Поставьте качество 75–80
На глаз неотличимо от 100, но файл в 2–3 раза легче.
Снимите метаданные
--strip-all: минус килобайты и минус геометка.
Включите progressive
Чуть меньше вес и приятнее загрузка на медленном интернете.
Рассмотрите WebP/AVIF
Для веба это ещё −25–50% при том же качестве.
Сделайте первые два пункта — и в большинстве случаев проблема «JPG слишком тяжёлый» решена. Остальное — тонкая настройка для тех, кто хочет выжать максимум.
Частые вопросы о сжатии JPG
jpegoptim --strip-all) уменьшает файл и убирает геометку — полезно перед публикацией.Читайте также
ОсновыЧто такое JPG: формат, который держит весь интернет
Как устроено сжатие с потерями и почему JPEG до сих пор везде.
ТехнологииПочему JPEG теряет качество: артефакты под микроскопом
Откуда берутся «квадратики» и ореолы и как их избежать.
СравнениеJPG, PNG или WebP для фото: что выбрать
Какой формат легче, чётче и совместимее — на реальных примерах.