Topic List Previews (legacy)

Сейчас миниатюры создаются ядром. Они не будут создавать изображения больше оригинала.

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

Я бы нашел компромисс и сделал миниатюры меньше, чтобы изображения низкого разрешения выглядели менее плохо.

1 лайк

Хорошо, возможно, это проблема с некоторыми миниатюрами, но это не объясняет остальные. У нас есть несколько тем (некоторые опубликованы сегодня, а другие — до обновления плагина TLP, то есть несколько недель назад), в которых загружены большие изображения шириной более 2000 пикселей, но для главной страницы генерируются очень маленькие миниатюры размером 50 и 100 пикселей.

Нет, нам нужен единый стандартный размер и разрешение по ширине, а высота должна быть переменной в соответствии с нашими настройками:

topic_list_thumbnail_width = 284
topic_list_thumbnail_height = 0
topic_list_thumbnail_resolution_level = 4 (мне пришлось использовать 4, потому что значение по умолчанию 2 не подходит… При значении по умолчанию 2 генерировались миниатюры размером 1024 пикселя, а мне нужен был размер 400, который, похоже, соответствует значению 4)

Как я понимаю, эти настройки означают:

  1. Миниатюры изображений будут иметь ширину 400 пикселей.
  2. Плитки будут отображать изображения шириной 284 пикселя и переменной высотой в зависимости от соотношения сторон оригинального загруженного изображения.

Однако форум как будто случайно отображает миниатюры шириной 50 или 100 пикселей для некоторых тем… При этом эти изображения подаются внутри рамки плитки, которая на нашем сайте всегда имеет ширину 284 пикселя, что приводит к размытости, поскольку меньшая миниатюра растягивается, чтобы заполнить плитку.

2 лайка

Проверьте вывод файла /latest.json в Firefox, чтобы увидеть, какие миниатюры сохраняются.

Вы также можете проверить размер отображаемых на странице миниатюр с помощью инспектора браузера.

Дайте мне знать, если заметите что-то необычное.

А, настройка ширины не имеет значения для режима плиток. (Попробуйте уменьшить её или установить очень большое значение). Имеет значение только разрешение.

Возможно, режим плиток вам не подходит?

Может быть, мне стоит запретить отображение миниатюр низкого разрешения в режиме плиток? То есть вообще их не показывать. Например, отфильтровать все миниатюры размером 50 x 50.

1 лайк

Кажется, я наконец понял, что происходит… Вот моё лучшее предположение, основанное на том, что я наблюдаю:

Проблема заключается в том, как TLP обращается к полю thumbnails в файле /latest.json. Количество элементов в thumbnails не всегда одинаково для каждой темы. Если выбранное исходное изображение темы меньше 1024 пикселей, то миниатюра такого размера не будет сгенерирована, и соответствующая запись отсутствует в массиве thumbnails. Поскольку в thumbnails не хватает одного элемента, счётчик плагина будет ошибаться на единицу и возвращать неверный размер миниатюры. Если исходное изображение темы уже 800 пикселей, то не будут сгенерированы миниатюры шириной 1024 и 800 пикселей, счётчик плагина будет ошибаться на две единицы и возвращать ещё меньший неверный размер миниатюры :wink:

Похоже, что плагин просто перебирает массив thumbnails, выбирая заранее определённый элемент, тогда как ему следовало бы искать элемент с конкретным значением max_width, соответствующим настройке разрешения списка тем на сайте. Благодаря такому подходу темы могли бы иметь массивы thumbnails разной длины в файле latest.json и при этом возвращать правильный размер миниатюры.

Это объясняет, почему на нашем форуме некоторые плитки тем отображались с шириной 50 пикселей, некоторые — 100 пикселей, а большинство — с правильными 400 пикселями… Темы с меньшей шириной имели исходные изображения уже 1024 пикселей или уже 800 пикселей.

Надеюсь, это понятно!

Также, не могли бы вы добавить register_topic_thumbnail_size [300, 300], так как нам нужна ширина 284 пикселя для наших плиток, и загрузка миниатюр размером 300 пикселей для нас предпочтительнее, чем загрузка миниатюр размером 400 пикселей. В идеале мы предпочли бы генерировать именно нужный размер, но, вероятно, я перейду на компонент темы, когда вы официально его выпустите, и просто добавлю свой собственный размер.

Спасибо за вашу работу как над плагином, так и над компонентом! :clap:

Извините, я пока не понимаю проблему.

Ваш пример решения не релевантен, так как он не генерирует миниатюры с разрешением выше 800x800. Миниатюра с самым высоким разрешением в массиве — это просто оригинальное изображение.

В любом случае, я думал, что вас беспокоят изображения с низким разрешением, почему вы привели пример, касающийся такого большого изображения? Вы имеете в виду, что это большое изображение отображается на уровне 50x50?

Да, конечно, длина массива миниатюр варьируется. Алгоритм разработан с учётом этого. Возможно, есть ошибка, но тот факт, что список миниатюр имеет переменную длину, уже является неявным предположением текущего кода.

Он выбирает уровень разрешения миниатюры, который вы указали, и при необходимости корректирует его. Например:

  • Если экран определён как Retina, выбор сдвигается на один уровень вверх, чтобы результат имел более высокое разрешение.
  • Если требуемое разрешение недоступно, выбирается следующее доступное с более высоким разрешением.

Как я уже говорил, если доступно только 50x50, я, вероятно, должен полностью отключить отображение миниатюр в плитках.

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

1 лайк

Да, мы наблюдаем несколько тем, где большое изображение отображается на уровне 50x50, даже когда доступны уровни 400x400 и 200x200. Единственное, что я заметил общего в этих темах, — это то, что загруженное оригинальное изображение было либо меньше 1024 пикселей в ширину, либо меньше 800 пикселей, из-за чего эти размеры отсутствовали в массиве миниатюр. Это заставило меня предположить, что способ доступа плагина к миниатюрам каким-то образом связан с длиной массива миниатюр.

Я полностью понимаю вашу позицию относительно добавления пользовательских размеров. Спасибо за подробное объяснение :+1:

1 лайк

Ага, отлично, спасибо за информацию. Возможно, это баг. Я займусь этим, как только появится возможность.

2 лайка

Мы бы с удовольствием использовали это, так как я хотел бы генерировать эскизы именно заданного размера!

1 лайк

Можете отправить мне в личное сообщение проблемное изображение в полном размере, и я его проверю? Также подтвердите, какой уровень разрешения вы установили, и на каком устройстве вы столкнулись с этой проблемой.

2 лайка

Готово! Спасибо @merefield за проверку этого вопроса

1 лайк

Не знаю, только у меня или нет, но миниатюры на мобильных устройствах с компонентом темы перестали работать. С компонентом миниатюр тем они всё ещё работают, так что, похоже, это баг. Кстати, в консоли ничего релевантного я не вижу.

2 лайка

Не удалось воспроизвести, в последних тестах, прошедших проверку, всё в порядке.

1 лайк

Всем привет, окно обновления закрывается в эти выходные.

Я только что провел краткую проверку плагина и TC, и всё выглядит хорошо.

Пожалуйста, воздержитесь от обновления после воскресенья. Я не буду обязываться исправлять критические изменения до следующего месяца.

1 лайк

После некоторых попыток устранения неполадок выяснилось, что это конфликт с плагином событий. Можете ли вы воспроизвести проблему?

2 лайка

Я подробнее объяснил в личном сообщении, но суть в том, что, похоже, есть проблема с пользовательскими размерами разрешения в TLP. Если мы загружаем изображение шириной 1024 пикселей или меньше, миниатюра 1024x1024 не генерируется. Если мы загружаем изображение шириной 800 пикселей или меньше, миниатюра 800x800 не генерируется. Это ожидаемое поведение.

Неожиданным является то, что уровень разрешения 2 на самом деле не загружает размеры 400x400, а вместо этого загружает следующее:

  1. Миниатюры 1024x1024 для всех тем, у которых исходная ширина загруженного изображения превышала 1024 пикселя.
  2. Миниатюры 800x800 для всех тем, у которых исходная ширина загруженного изображения была меньше 1024 пикселей, но больше [не указано].
  3. Миниатюры 400x400 для всех тем, у которых исходная ширина загруженного изображения была меньше 800 пикселей, но больше 400 пикселей.
  4. Миниатюры 100x100 для всех тем, у которых исходная ширина загруженного изображения была меньше 400 пикселей, но больше 100 пикселей.

Я думал, что уровень разрешения 2 будет просто миниатюрами размером 400x400 для всех тем.

1 лайк

Дэвид/Ник,

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

Это развёрнуто в TC и в плагине.

Обратите внимание: новый масштаб разрешения — от 0 до 6, где 0 — исходное изображение, 1 — следующее по качеству разрешение, а 6 — самое низкое.

Пожалуйста, обновите свой плагин/TC и дайте знать, решило ли это проблему.

@davidkingham, @internet_cookie, спасибо, что обратили на это моё внимание.

(Дэвид, думаю, это та проблема, с которой вы столкнулись, но я могу ошибаться).

2 лайка

Спасибо, Роб. К сожалению, это не решило мою проблему — конфликт с плагином событий всё ещё сохраняется. На моём продакшн-сайте вы можете увидеть, что миниатюры на мобильных устройствах не работают, а на моём тестовом сайте при отключённом плагине событий они работают.

2 лайка

Не понимаю, как они вообще могли работать вместе (включая плагин TLP). Оба переопределяют шаблон элемента списка тем для мобильных устройств. Это непреодолимое препятствие. На данный момент вам придется выбрать один из них.

Возможно, в долгосрочной перспективе я попробую создать версию, использующую только CSS/плагины и точки расширения, чтобы избежать переопределения шаблона, но сейчас это не является приоритетом, от которого зависит выживание компании.

Однако масштаб переопределения, необходимый TLP для отрисовки плитки, может оказаться невозможным реализовать только с помощью точек расширения.

1 лайк

Обидно, я так радовался, что события наконец-то вернулись, ха-ха! Мне кажется странным, что компонент темы «Миниатюры тем» работает с плагином событий. Я не ставлю под сомнение ваш вывод, просто пытаюсь помочь. Похоже, это тоже переопределяет шаблон? Чтобы было понятно, я говорю о плагине событий от Pavilion, а не от команды Discourse в плагине календаря.

2 лайка

Поскольку используемая раскладка не требует переопределения шаблона. В TLP я размещаю больше элементов, и некоторые из них находятся во вложенных div, поэтому они не будут работать так же: мне приходится полагаться на переопределение шаблона. Обычно это не так рискованно, поскольку это листовой узел.

2 лайка