主题列表预览(旧版)

缩略图现在由核心模块生成。它们不会创建比原始图像更大的缩略图。

考虑到这一点,你想要的可能是可变尺寸的缩略图,但这看起来会有点杂乱?目前尚不支持此功能。

我建议找一个折中方案,将缩略图做得更小,这样低分辨率的缩略图看起来就不会那么糟糕。

1 个赞

好的,这可能是某些缩略图出现问题的原因,但这无法解释其他情况。我们有多个主题(有些是今天发布的,有些是在 TLP 插件升级之前发布的,可追溯到几周前),这些主题上传了宽度超过 2000px 的大图,但在首页生成的缩略图却非常小,只有 50px 和 100px。

[quote=“merefield, post:1125, topic:101646”]
仔细想想,你想要的可能是可变尺寸的缩略图,但这看起来会有点杂乱?[/quote]

不,我们想要的是统一的固定宽度和分辨率,高度则根据我们的设置自适应:

topic_list_thumbnail_width 设置为 284
topic_list_thumbnail_height 设置为 0
topic_list_thumbnail_resolution_level 设置为 4(我不得不使用 4,因为默认的 2 不正确……设置为默认的 2 时生成的是 1024px 的缩略图,而我需要的是 400px 的尺寸,这似乎对应级别 4)

我对这些设置的理解如下:

  1. 图像缩略图的宽度将为 400px
  2. 卡片(Tiles)将以 284px 的宽度显示图像,高度则根据原始上传图片的宽高比自适应

然而,论坛似乎随机地为某些主题提供 50px 或 100px 宽的缩略图……而且这些图像被显示在卡片框架内,而我们的网站卡片框架宽度始终为 284px。因此,由于较小的缩略图被拉伸以填满卡片,导致图像变得模糊。

2 个赞

请在 Firefox 中检查你的 /latest.json 输出,以查看正在存储哪些缩略图。

你也可以使用浏览器的开发者工具检查页面上显示的缩略图大小。

如果你发现任何异常情况,请告诉我。

啊,宽度设置对图块视图无关紧要。(尝试将其调低或调得非常高)只有分辨率才重要。

也许图块视图并不适合你?

我是否应该阻止低分辨率缩略图在图块视图中显示?即完全不显示它们。或许可以过滤掉所有 50 x 50 的缩略图。

1 个赞

我想我已经完全弄清楚是怎么回事了……这是基于我所见情况的最佳推测:

问题出在 TLP 访问 /latest.json 中的 thumbnails 的方式上。thumbnails 中每个主题包含的元素数量并不总是相同。如果被选为生成缩略图的原始主题图片实际宽度小于 1024 像素,那么该尺寸的缩略图就不会被生成,thumbnails 数组中也不会包含该尺寸的元素/条目。由于 thumbnails 缺少一个元素,插件的计数就会少一,从而返回错误的缩略图尺寸。如果原始主题图片宽度小于 800 像素,那么 1024 像素和 800 像素的宽度都不会被生成,插件计数就会少二,返回一个甚至更小的错误缩略图 :wink:

看起来该插件在需要时,似乎是遍历 thumbnails 数组直到某个预设的元素,而实际上它应该查找的是具有特定 max_width 的元素,该宽度应对应主题列表分辨率的网站设置。这样,即使 latest.jsonthumbnails 数组的长度各不相同,主题也能返回正确的缩略图宽度。

这也能解释为什么我们论坛上的某些主题缩略图显示为 50 像素宽,有些是 100 像素宽,而大多数则是正确的 400 像素宽……那些显示较小宽度的主题,其原始图片的宽度要么小于 1024 像素,要么小于 800 像素。

希望这能说得通!

另外,能否请您添加 register_topic_thumbnail_size [300, 300]?因为我们的缩略图需要 284 像素的宽度,加载 300 像素的缩略图对我们来说比加载 400 像素的更好。理想情况下,我们更希望生成精确的宽度,但等您正式发布主题组件后,我可能会过渡到使用主题组件,并添加自己的自定义宽度。

感谢您对插件和组件所做的工作!:clap:

抱歉,我还没完全理解这个问题。

您的示例解决方案并不相关,因为它生成的缩略图分辨率不超过 800x800。数组中分辨率最高的那个其实就是原始图片。

无论如何,我以为您担心的是低分辨率图片,那为什么要举一个关于如此大图片的例子呢?您是想说这张大图被以 50x50 的级别显示吗?

是的,缩略图数组的长度确实会变化。该算法的设计就是为了处理这种情况。可能存在某个 bug,但缩略图列表长度可变这一事实,已经是当前代码的隐含假设。

它会选取您选择的缩略图分辨率级别,并在必要时进行调整。例如:

  • 如果屏幕被识别为视网膜屏,它会将选择提升一级,从而获得更高分辨率的图像。
  • 如果所需分辨率不可用,它会选择下一个可用的最高分辨率。

正如我之前所说,如果只有 50x50 的分辨率可用,我或许应该在 Tiles 中完全抑制缩略图的显示。

如果您希望添加自定义分辨率,目前请自行 Fork 该插件。缩略图的分辨率是刻意设计为成倍递增的。如果只为您的需求而更改,会增加所有用户的磁盘空间占用。我认为没必要如此严格地匹配原始图片,因为它们只是缩略图预览。不过,也许确实有必要提供一个更贴近常见 Tiles 使用场景的分辨率。让我再考虑一下。

1 个赞

是的,我们注意到有几个主题中,大图是以 50x50 的级别显示的,尽管同时也存在 400x400 和 200x200 的级别。我观察到的唯一共同点是,上传的原始图片宽度要么小于 1024 像素,要么小于 800 像素,导致这些尺寸在缩略图数组中缺失。这让我认为该插件访问缩略图的方式与缩略图数组的长度有关。

我完全理解不添加自定义尺寸的原因。感谢你的详细解释 :+1:

1 个赞

好的,这信息很有用。可能存在一个 bug。我找时间查看一下。

2 个赞

我们绝对会采用这个功能,因为我非常希望能生成精确指定时间缩略图尺寸!

1 个赞

能否私信一张有问题的全尺寸图片,我来测试一下?另外,请确认您设置的分辨率级别,以及您在什么设备上遇到了此问题。

2 个赞

完成!感谢 @merefield 对此问题的调查。

1 个赞

我不确定是不是只有我遇到这个问题,但使用主题组件时,移动端的缩略图已停止工作。使用主题组件的帖子缩略图功能仍然正常,因此这似乎是一个漏洞。顺便提一下,我在控制台中没有看到任何相关信息。

2 个赞

无法复现,最新通过的测试均正常。

1 个赞

各位注意,升级窗口将于本周末关闭。

我刚刚对 Plugin 和 TC 进行了简要检查,一切正常。

请在周日之后不要进行升级。在下个月之前,我不会承诺修复破坏性变更。

1 个赞

经过一些故障排查,这似乎与事件插件存在冲突,您能复现吗?

2 个赞

我已在私信中做了更详细的说明,但基本上问题似乎出在 TLP 自定义分辨率尺寸上。如果我们上传宽度小于或等于 1024 像素的图片,则不会生成 1024x1024 的缩略图;如果上传宽度小于或等于 800 像素的图片,则不会生成 800x800 的缩略图。这是目前预期的行为。

但不符合预期的是,分辨率级别 2 实际上并没有加载 400x400 的尺寸,而是加载了以下内容:

  1. 对于原始上传图片宽度大于 1024 像素的所有主题,加载 1024x1024 缩略图
  2. 对于原始上传图片宽度小于 1024 像素但大于 800 像素的所有主题,加载 800x800 缩略图
  3. 对于原始上传图片宽度小于 800 像素但大于 400 像素的所有主题,加载 400x400 缩略图
  4. 对于原始上传图片宽度小于 400 像素但大于 100 像素的所有主题,加载 100x100 缩略图

我以为分辨率级别 2 会直接为所有主题加载 400x400 尺寸的缩略图。

1 个赞

David/Nick,

好的,我重新审视了用于选择分辨率的算法,并进行了改进。

此更新已部署到 TC 和插件中。

注意:新的分辨率比例范围为 0 到 6,其中 0 代表原始图像,1 代表次高分辨率,6 代表最低分辨率。

请更新您的插件/TC,并告知我们这是否解决了该问题。

@davidkingham, @internet_cookie,感谢你们提出这个问题。

(David,我认为这就是你遇到的问题的根源,但也可能我判断有误)。

2 个赞

谢谢 Rob,不幸的是这并没有解决我的问题,仍然与事件插件存在冲突。您可以在我的生产站点上看到缩略图在移动设备上无法显示,但在我的开发站点上禁用事件后它们可以正常工作。

2 个赞

我无法理解它们如何能协同工作(包括 TLP 插件)。两者都在覆盖移动端的主题列表项模板。这是一个无法接受的问题。目前,您需要在两者之间做出选择。

从长远来看,我可能会尝试一个仅通过 CSS 或插件出口(outlet)实现的版本,以避免模板覆盖,但这目前并非当务之急。

不过,TLP 为渲染 Tile 所需的覆盖程度,可能无法仅通过出口来实现。

1 个赞

太遗憾了,我本来很期待终于能恢复活动功能哈哈!我发现“主题缩略图”组件确实与活动插件兼容,我并不是质疑你的结论,只是想帮忙。这似乎也会覆盖模板吗?需要澄清一下,我指的是 Pavilion 的活动插件,而不是 Discourse 团队在日历插件中的那个。

2 个赞

因为它所使用的布局不需要覆盖模板。在 TLP 中,我布置了更多内容,其中一些位于嵌套的 div 中,因此无法以相同方式工作:我必须依赖模板覆盖。通常这并不太有风险,因为它是叶子节点。

2 个赞