Почему по умолчанию конвертировать PNG в JPG?

Я полностью понимаю (и ценю!), что это представлено как настройка сайта для администраторов, которую можно включить или выключить, но считаю, что сама эта «функция» изначально очень ошибочна.

У PNG есть две крайне важные особенности: их безпотерочное (и читаемое!) представление текста и поддержка прозрачности. Обе эти особенности являются вескими причинами для использования PNG. Как пользователь сайта на движке Discourse, я загрузил изображение (текст с прозрачностью) на свою доску и был крайне разочарован, увидев, что оно автоматически конвертируется в JPG. Ничего страшного, я просто размещу его где-то ещё. Так всё работало отлично, пока не появился @system, который скачал и конвертировал моё изображение, отредактировав мой пост из-под меня, разрушив прозрачность и ухудшив внешний вид. К счастью, я также являюсь администратором и смог найти в интернете одну из тем ниже, которая подсказала мне настройку png to jpg quality, которую я мог изменить.

Как минимум, кажется разумным отключить эту функцию, если в GIF есть прозрачность.

Действительно ли людям нравится эта функция на их досках? Она уже поднималась дважды, и оба раза люди были сбиты с толку/разочарованы тем, что PNG конвертировались. Кажется, стоит пересмотреть это значение по умолчанию.

3 лайка

Это означает, что изображение в формате JPG было значительно меньше по размеру. Я полагаю, что в настройках сайта можно изменить этот порог. Посмотрите, поищите в настройках вашего сайта.

4 лайка

В разделе Настройки/Файлы прокрутите вниз до третьего пункта снизу. Снимите галочку с опции Удалить метаданные изображения. Сразу над ней находится настройка качество PNG в JPG. При необходимости измените эту настройку.

5 лайков

Да, я полностью понимаю, что это настраиваемая опция (я уже отключил её на своём сайте), и я осознаю мотивацию. Однако я по-прежнему считаю, что сама эта функция ошибочна, и было бы логично изменить настройки по умолчанию.

Вот пример: PNG является стандартным форматом для скриншотов, и это правильно. Если я просто сделаю скриншот этого окна и попробую загрузить его, он будет преобразован в JPG.

Исходный файл весил 361 КБ, а ваш сжатый JPG — 218 КБ. Конечно, он меньше, но мы потеряли прозрачность — для пользователей тёмной темы это выглядит ужасно — и вокруг текста появились артефакты.

Если же я использую optipng локально для оптимизации PNG, то получаю файл с прозрачностью и чётким текстом, который весит всего 219 КБ. При загрузке он останется в формате PNG:


Преобразование PNG в JPG — это очень потерянное преобразование. Одно дело делать это при загрузке, но совсем другое — автоматически редактировать посты и применять это к внешним изображениям уже после публикации. Существуют и другие способы экономии трафика и места на диске, включая оптимизаторы PNG и даже изменение размера изображений (с учётом функции «нажмите для просмотра в полном размере» логично встраивать в пост уменьшенное изображение и показывать полную версию только по клику).

4 лайка

Это тонкое равновесие.

Есть много тем от людей, которые пытаются разместить свои форумы как можно дешевле и жалуются, что изображения занимают слишком много места. Такие администраторы не заботятся о качестве изображений; им нужно лишь сократить расходы и сэкономить на всём.

С другой стороны, есть люди, которые действительно заинтересованы в развитии своих сообществ, используют объектное хранилище и могут обеспечить хорошее качество при разумных затратах.

Речь здесь идёт о настройках по умолчанию? Или, возможно, стоит сравнить размер JPG с оптимизацией PNG после публикации? Если я не ошибаюсь, оптимизация PNG может быть довольно затратной…

9 лайков

Вы не выиграете в этом споре, мой друг. Лучше остановиться сейчас. Настройка сайта существует, чтобы вы могли подстроить её под свои предпочтения.

2 лайка

Удаление этой функции не состоится. Но этот пост выглядит интересным:

Что нужно, чтобы Discourse сначала пытался использовать optipng, а затем использовал полученный «оптимизированный» размер, чтобы решить, переходить ли к JPG? Или это будет слишком медленно?

4 лайка

Попробуйте запустить optipng для PNG-файла размером 6000x6000 и посмотрите, что произойдёт. Мы уже применяем нечто подобное, но алгоритм быстро перестаёт работать и делает это крайне неэффективно.

5 лайков

Я вовсе не стремлюсь убрать эту функцию — извините, если выразился слишком резко, назвав её ошибочной. Речь идёт о настройках по умолчанию. Мне просто показалось, что поведение неожиданным и бесполезным (особенно после того, как я обошёл это ограничение, используя внешнюю ссылку, а система автоматически вернула всё как было). Поэтому я обратился сюда, так как считал, что изменение настроек по умолчанию могло бы быть полезно и другим… но, как и в случае с любыми настройками по умолчанию, в игру быстро вступают субъективные предпочтения относительно компромиссов. Спасибо за взвешенный пост, Рафаэль. Я ценю обсуждение — как я уже сказал изначально, я искренне хотел узнать, нравится ли эта функция другим.

3 лайка

Я думаю, было бы интересно перейти с .jpg на .webp: формат сжатия без потерь, но при этом размер файла меньше, чем у .png.

Насколько я понимаю, это новый веб-стандарт для работы с медиа, особенно для изображений, где важна поддержка прозрачности.

3 лайка

Мы не можем этого сделать, так как старые / несовместимые браузеры (IE и Safari) не поддерживают этот формат.

10 лайков

Я сейчас просто ненавижу Safari, но спасибо за быстрый ответ. Надеюсь, поддержка появится скоро.

Особенно учитывая, что со временем IE11 будет становиться всё менее важным.

2 лайка

Стоит сказать, что текущее решение по умолчанию использовать оптимизированный JPEG — это не ошибочный шаг! Я обожаю PNG :smile_cat: и ненавижу JPG :grumpycat: для графики, но в данном вопросе я полностью поддерживаю нынешний порядок (в обоих смыслах: как власть и как система).

Команда Discourse провела реалистичную оценку того, что обеспечит успех Discourse из коробки:

  • Средний владелец сайта-администратор не будет искать опции качества изображений. Качество изображений не является для него целью, и он не станет считать формат файлов изображений по умолчанию проблемой. Поэтому использование оптимизированного JPG по умолчанию вызывает меньше всего проблем и приносит наибольшую пользу большинству людей.

  • Любители PNG, такие как я, всегда ищут настройки сайта для сохранения качества и информации изображений. Аналогично, сайты, ориентированные на фотографии и изображения, будут рассматривать качество изображений как ключевое решение.

Практическим следствием текущего подхода, скорее всего, станет плавный переход к потерям WebP. Тогда в будущих темах здесь, вероятно, возникнет вопрос о WebP с потерями и без потерь. :laughing:

Если вы когда-либо оптимизировали множество файлов PNG, то знаете, что результат, скорее всего, будет непривлекательным. Оптимизаторы PNG работают вечно по сравнению с оптимизаторами JPG. Кроме того, для создания PNG-изображений, которые можно наиболее эффективно оптимизировать, требуется больше знаний, например: https://medium.com/@duhroach/reducing-png-file-size-8473480d0476 или How To Optimize PNG — Smashing Magazine

5 лайков

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

Благодаря переносу работы по сжатию в отдельный поток (с использованием веб-воркеров) и применению тех же алгоритмов, что и на сервере (с использованием WASM), пользовательский опыт остается комфортным.

15 лайков

Как вы смотрите на то, чтобы отключить это поведение, если PNG имеет прозрачность? Это наиболее заметная потеря в процессе конвертации.

4 лайка

Похоже, это можно определить с помощью

5 лайков

Если вы скажете программе для создания скриншотов перестать добавлять тени, Discourse, скорее всего, перестанет конвертировать изображение, так как оно фактически будет состоять из текста и сплошных цветов.

5 лайков

Сегодня я изучал этот вопрос для сайта, который хочет сохранять все загруженные файлы PNG в формате PNG. Я обнаружил, что после установки параметра «Качество преобразования PNG в JPG» на 100, Discourse всё равно конвертирует большие PNG в JPG, если параметр «Повторное сжатие исходного JPG, качество» также не установлен на 100. Это ожидаемое поведение? Если да, то описание параметра «Повторное сжатие исходного JPG, качество» необходимо обновить, чтобы объяснить, как он влияет на загрузку PNG.

8 лайков

Хм, я не уверен. @sam, ты хочешь принять это решение на следующей неделе? Нам хотя бы нужно обновить текст.

3 лайка

Я не уверен… передаю слово @zogstrip

4 лайка