Как изменить сжатие JPEG изображений в WordPress

Дата публикации:Август 24, 2013

Постойте? WordPress автоматически сжимает JPEG изображения? Это вполне может стать новостью для вас. Когда jpeg-изображения будут загружены в WordPress, к ним автоматически применится сжатие в 90% от оригинала. Скорее всего, это было введено для того, чтобы ваши страницы загружались быстрее, а размеры файлов были меньше. Да и, в самом деле, заметите ли вы эти «утраченные» 10% цифровых изображений?

Возможно, вы уже сжимали ваши изображения при подготовке их к публикации. В этом случае дополнительное сжатие может показаться излишним. Или, может быть, ваши страницы загружаются очень медленно, и вы хотите сделать сжатие JPEG-изображений более агрессивным? Отлично, мы покажем, как это реализовать.

Как отключить сжатие JPEG файлов

Если вы хотите полностью отключить сжатие jpeg-файлов, то вам необходимо указать WordPress, что все эти файлы надо загружать в 100% качестве.

Добавьте следующую строку в файл functions.php вашей темы (либо создайте свой функциональный плагин):

add_filter( 'jpeg_quality', create_function( '', 'return 100;' ) );

Этот код полностью отключит jpeg-сжатие на вашем сайте. Однако если вы желаете не отключать его, а лишь несколько его изменить, то в таком случае продолжайте читать статью.

Как увеличить сжатие JPEG файлов

Сжатие ваших изображений сильнее, чем значение по умолчанию, сделает размеры вашего файла еще меньше, что может поднять производительность сайта. Сжатие в 80% и в 85% от оригинала практически не отличаются друг от друга. Важно помнить, что чем меньше процент, тем сильнее будет сжато изображение.

add_filter( 'jpeg_quality', create_function( '', 'return 80;' ) );

Заметьте, что любые изменения, которые вы сделаете, будут применяться только к новым изображениям, загруженным на ваш сайт. WordPress не будет автоматически возвращаться назад и изменять размеры всех загруженных ранее изображений. Если вы желаете обновить все свои миниатюры в новом размере, то в таком случае я советую воспользоваться плагином Regenerate Thumbnails. Он быстро пробежится по всем вашим миниатюрам и выполнит необходимые изменения.

Источник: wpmu.org

Поделиться

16 комментариев

  1. Так jpeg сам по себе вроде бы при сжатии 100% всё равно сжимает. Т.е. к примеру открываем в каком-нибудь редакторе картинок jpg и сохраняем опять в jpg, при сохранении применяется сжатие 100%. Т.е. я хочу сказать, что в общем случае сжатие в 100% это не отсутствие пережатия и запись неизмененного оригинала. Не знаю как в WP с этим правда.

    • Architect Of Ruin says:

      Я так понимаю, что WP применяет к изображениям некоторые фильтры, которые дополнительно ухудшают качество — это как в Photoshop, когда сохраняешь изображение для web, можно выставлять оптимизацию в определенное число процентов от оригинала. При малом числе процентов появляется зашумленность и замыленность, которая заметна глазу.

  2. Нет, ну в статье то суть была в том, что «полностью отключить сжатие». А я к тому, что установка сжатия в 100% — не есть отключение сжатия. Всё равно ж WP будет пережимать картинки или не будет их трогать?

    • Architect Of Ruin says:

      Имеется в виду 100% качества от оригинала — то есть сам оригинал, без сжатия.

  3. BaNru says:

    Странно. У меня наверное особенный WP, ибо оригиналы хранятся на сервере.

    Данные настройки применяются к масштабируемым картинкам (миниатюре и промежуточному), а не к оригиналу. И как подметил Волшебник
    — 100% это тоже сжатие. У JPEG формата любые манипуляции с оным приводят к потери качества. 100% != оригинал.

    Раньше была галочка в админке «оставлять оригинал на сервере». Сейчас я её что-то не могу найти, наверное плохо искал. Я так понимаю при любом раскладе на сервере сохраняется оригинал в настоящее время.

    И так как оригинал не трогается (можно проверить элементарно по размеру файла — после любых манипуляций он меняется, даже при 100% компрессии), то смысла устанавливать в 100% нету. Можно поиграться с этим параметром и экспериментальным путем получить наилучшее значение между 80% и 90%, при котором качество картинки сильно не пострадает на глаз. Разница в размере между 90% и 100% может быть в 2-3 раза при не заметном ухудшение качества. В общем это отдельная тема, которая много раз обсуждалась в сети (в частности для фотошопа) и стоит учесть, что разработчики не дураки, поэтому глупо делать 100%.

  4. Да… по-моему WP в любом случае не трогает оригинал. Я проверил несколько картинок огромного размера, которые хранятся на сервере. Они идентичны оригиналам. При этом никаких настроек я не трогал. Согласен с BaNru, сжатие применяется только к уменьшенным копиям.

    Таким образом данный код не «полностью отключает сжатие» как говорится в статье, а просто задаёт 100%-ный уровень сжатия для уменьшенных изображений.

    • Architect Of Ruin says:

      Оставлю пока так, поскольку так написано в оригинале (хоть это и не совсем верно). Если у человека возникнут похожие вопросы, то он обратится к комментариям и получит ответ. Кстати, это сжатие относится только к JPEG изображениям. Вот код из файла wp-admin/includes/image-edit.php:

      switch ( $mime_type ) {
       case ‘image/jpeg’:
       return imagejpeg( $image, $filename, apply_filters( ‘jpeg_quality’, 90, ‘edit_image’ ) );
       case ‘image/png’:
       return imagepng( $image, $filename );
       case ‘image/gif’:
       return imagegif( $image, $filename );
       default:
       return false;
       } 

      Как видно отсюда, gif и png никак не затрагиваются.

      Еще есть вот такой плагин для оптимизации изображений:

      http://wordpress.org/plugins/ewww-image-optimizer/

  5. BaNru says:

    >Кстати, это сжатие относится только к JPEG изображениям
    Спасибо КЭП
    Это основы.

    JPEG имеет шкалу от 0 до 100, при которых 100 не значит 100% качества, а ниже 50% практически не имеет смысла.
    PNG — от 0 до 9, где 9 самое максимально сжатие. Все уж давно используют де факто 9.
    GIF — не имеет вариантов сжатия (оно там одно по умолчанию), только алгоритмы с цветами и алгоритмы оптимизации, ибо ограничение в 256 цветов (8 бит). Эти же алгоритмы имеются в PNG для 256 и меньшего количества цветов.

  6. Вы лучше подскажите, как сжать уже существующие фотографии на сайте?

  7. где находится файл functions.php темы ?. Подскажите мне пожалуйста. Я его искала, но не нашла.
    Фотошопом оригинал не корректируется, на любой размер оригинала выдается размытая тухлая картинка, которую стыдно вставлять в блог.
    Плагин отключения сжатия» Disable JPEG Compression»порообовала поставить, активировала- фотки сжаты и по прежнему размыты.

    • Дмитрий Алёшин says:

      Файл находится в папке с вашей темой на сервере. Доступ к нему можно получить через админку, «Внешний вид — Редактор — Функции темы (functions.php)». Сразу предупреждаю, что если что-то неправильно в него добавить, то тема может перестать работать. Поэтому вы должны иметь доступ к файлам темы на сервере через FTP (на всякий случай). Добавлять строки кода в functions.php надо в самый низ файла.

  8. Катя says:

    Вопрос как раз по плагинам, которые подгоняют картинки под тему сайта: после смены темы приходилось менять размеры изображений с помощью плагина. Картинок на сайте очень много и после обработки плагином в папке uploads остается много картинок тех размеров, которые мне не нужны, они просто засоряют базу. Как быстро можно удалить эти ненужные копии? Сама пока знаю только два варианта — перезагрузка всех картинок и вручную удаление, что очень долго.

  9. Дмитрий says:

    Можно им тоже воспользоваться. Его минус только, что он сильно нагружает блог, поскольку все изображения преобразуются в новый размер за один шаг. Для смены размера есть еще такой плагин: https://wordpress.org/plugins/ajax-thumbnail-rebuild/, но он не удаляет неиспользуемые файлы.

  10. Wedland says:

    При добавлении строчки:
    add_filter( ‘jpeg_quality’, create_function( », ‘return 100;’ )
    Сайт вернул мне ошибку 503, пришлось бекапить =(

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Получать новые комментарии по электронной почте. Вы можете подписаться без комментирования.