Инструкция

Как уменьшить размер JPG без потери качества: полное руководство

Фото весит 8 МБ, не грузится в форму и тормозит сайт — знакомо? Хорошая новость: в 90% случаев JPEG можно ужать в несколько раз, и разницу вы просто не увидите. Плохая новость: люди гонят качество на 100 и удивляются мегабайтам. Разберём по шагам, какие рычаги реально работают — от уровня качества до ресайза — и сколько именно каждый из них экономит.

Дизайнер за компьютером оптимизирует фотографию в графическом редакторе
Сжать JPG без видимой потери качества — вопрос правильных настроек, а не дорогого софта. Фото: Pexels

Почему 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–80оптимальное качество для веба
2–3×экономия против качества 100
<60здесь начинаются видимые артефакты

Где проходит граница? Ниже качества 60 на градиентах (небо, кожа, плавные переходы) и вокруг резких контуров появляются характерные «квадратики» и ореолы — артефакты блочного сжатия. Это и есть та самая «потеря качества», которой все боятся. Поэтому практическое правило такое:

  • 85–80 — когда важна каждая деталь: портфолио, печать небольшого формата, превью с текстом.
  • 80–70 — универсальный диапазон для сайтов и соцсетей. Лучший баланс «вес/качество».
  • 70–60 — фоновые и второстепенные изображения, где экономия трафика важнее идеала.

Не пересохраняйте по кругу

JPEG теряет качество при каждом повторном сохранении — это называется потерями поколений. Открыли фото, чуть подправили, сохранили, снова открыли, снова сохранили — и артефакты копятся. Храните оригинал отдельно, а сжатую версию делайте из него один раз.

Человек просматривает библиотеку фотографий на большом экране перед экспортом
Перед экспортом стоит решить два вопроса: какой размер показа реально нужен и какое качество достаточно. Фото: Pexels

Ресайз: самый недооценённый приём

Если из всей статьи запомнить один совет — пусть это будет он. Уменьшение разрешения под реальный размер показа сокращает файл сильнее всего остального — на 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 в более экономичный формат.

1

Загрузите JPG

Перетащите файлы в окно конвертера. Можно несколько сразу.

2

Выберите формат и качество

WebP при качестве ~80 даёт меньший вес, чем JPEG, при той же картинке.

3

Скачайте результат

Готовые файлы — за пару секунд, по одному или архивом.

Уменьшите свои 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 — он даёт компактные файлы, но работает очень медленно и требует много памяти, поэтому в реальных пайплайнах его почти не используют.

Фотограф обрабатывает снимки на ноутбуке рядом с внешним накопителем и отпечатками
Пакетная оптимизация — спасение, когда нужно подготовить к публикации не один кадр, а целую съёмку. Фото: Pexels

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, так что его берут не ради размера.

Чек-лист: что сделать прямо сейчас

Коротко, по шагам — от самого мощного приёма к деталям:

1

Уменьшите разрешение

До реального размера показа (×2 для Retina). Это даёт −80–90% веса.

2

Поставьте качество 75–80

На глаз неотличимо от 100, но файл в 2–3 раза легче.

3

Снимите метаданные

--strip-all: минус килобайты и минус геометка.

4

Включите progressive

Чуть меньше вес и приятнее загрузка на медленном интернете.

5

Рассмотрите WebP/AVIF

Для веба это ещё −25–50% при том же качестве.

Сделайте первые два пункта — и в большинстве случаев проблема «JPG слишком тяжёлый» решена. Остальное — тонкая настройка для тех, кто хочет выжать максимум.

Полностью без потерь — только если применять оптимизацию Huffman-таблиц и удалять метаданные: размер падает на 5–15%, а пиксели остаются нетронутыми. Всё, что даёт больший выигрыш (понижение качества, ресайз), формально вносит потери, но при качестве 60–80 и разумном размере их не видно глазом. На практике «без потери качества» означает «без видимой разницы».
Для веба и большинства фото оптимум — 60–80. Качество 80 обычно неотличимо от 100 на глаз, но файл легче в 2–3 раза. Ниже 60 уже заметны артефакты на градиентах и резких контурах. Сохранение на 95–100 почти всегда лишнее — вы платите мегабайтами за разницу, которую никто не увидит.
Чаще всего — ресайз. Фото с камеры в 4000×3000 пикселей на сайте показывается шириной 1200–1600 px, а лишние пиксели всё равно весят. Уменьшение до реального размера показа сокращает файл на 80–90%. Следом идёт уровень качества (60–80), затем удаление метаданных и progressive-кодирование.
Да, и заодно на приватность. EXIF хранит модель камеры, настройки и нередко GPS-координаты съёмки. Эти данные могут занимать десятки килобайт. Удаление метаданных (jpegoptim --strip-all) уменьшает файл и убирает геометку — полезно перед публикацией.
Для веба — почти всегда да. При том же визуальном качестве WebP легче JPEG примерно на 25–35%, а AVIF — около 50%. Оба поддерживаются всеми современными браузерами. JPEG остаётся для максимальной совместимости и там, где формат нельзя менять — см. конвертер JPG → WebP.