如何在单个帖子中嵌入大量 AVIF 图片以供在线阅读书籍?

您好,
我的项目是建立一个专注于《道德经》文化的社区。我需要展示超过 5000 本古籍,并将它们全部压缩为 AVIF 图像格式。其中一些书包含多达 2500 张 AVIF 图片。
我的问题是:如何将这些图片插入到单个 Discourse 帖子中,以便用户可以在线阅读?
我正在寻找一种解决方案,也许是一个插件,可以在帖子中为用户提供以下功能:
轻松地在图片之间来回翻页(就像翻书一样)。
能够直接跳转到特定的图片编号。
最重要的是,图片必须是惰性加载的;它们应该只在用户导航到它们时加载,而不是在帖子打开时一次性加载所有图片。
我的文件都按数字顺序排列,并且是 AVIF 格式。每本书都包含在自己的文件夹中。平均图片大小为 150kb,书籍通常有 300 到 1000 页,有些例外可达 2500 页。
为什么我有这个要求?
我的藏书量很大,目前已超过 350GB。压缩成 AVIF 是管理存储的必要措施。
AVIF 和 WebP 等格式不易打包成单个 PDF 文件。
将书籍打包成 ZIP 或 RAR 存档会阻止在线阅读。使用 CBZ 等电子书格式会给服务器带来过高的负载。
非常感谢您的帮助!

1 个赞

我很少这么说,但我不太确定 Discourse 是否是解决您问题的合适工具。

如果您仍然想这样做,我可能会创建一个主题代表一本书,然后创建一个帖子代表一章,如果这说得通的话(也许没有章节?)。

然后,您可以使用一个导入脚本来读取目录名称并创建一个主题,然后执行类似的操作:

files.each do |f|
   u=uploader.create_upload(1, f.path, f.filename)
   raw += uploader.html_for_upload(u, f.filename)
end

然后您将使用该原始数据来创建一个主题。

您需要查看导入脚本目录以查找创建主题的一些示例,但这只是一个大致的想法。

然后,这将把所有图像放在一个主题/帖子中。然后有一些工具可以让您滚动浏览大量图像,我想。也许其他人比我更关注那些。

2 个赞

正如所说,Discourse 可能没有帮助,至少在托管你的库方面是这样。相反,你可能需要考虑在 Discourse 实例旁边使用单独的图片托管服务。

下面是一些自托管照片库服务的列表,它们可能包含你想要的许多功能:开箱即用的 Web 应用、用户友好和移动友好的界面、基于目录的相册、搜索功能等。

你可以单独运行图片托管服务,并将其 URL 作为嵌入式 iframe 在 Discourse 上使用。这样可以避免 Discourse 数据库下载所有图片,并让图片托管服务处理延迟加载。然后,你可以开始考虑使用主题组件或插件来为库创建独立页面,自动链接用户帖子中的引用等。

1 个赞

我不认为这是托管问题,而是阅读时的可用性问题。对于更具西方风格的人来说,这与展示漫画非常相似。为此,他们可能会找到合适的平台,但我很确定即使是 WordPress 也能提供解决方案。

然后,通过 Discourse 将内容与社区/讨论联系起来完全是小菜一碟。

但在 Discourse 生态系统中,Discpage 提供的某些东西可能是另一种解决方案。但它坏了。

2 个赞

有在线漫画文件格式阅读器,它们可以按需加载文件:
GitHub - codedread/kthoom: Comic Book Reader in the Browser 例如支持 alwaysOptimizedForStreaming=true,它会告诉 kthoom 在解压缩时立即渲染页面,并可以从带有范围请求的 URL 加载。

如果想仅为登录用户或按用户组限制对书籍的访问,这是否也适用?

1 个赞

非常感谢大家的帮助!
我找到了一个解决方案:我在服务器上部署了一个 Zfile 服务,它充当私有云盘,并配置为允许匿名用户访问。
我可以控制每页显示的文件数量,并自定义每次手动加载的数量。匿名访问者的权限设置为“仅预览”。
这为我解决了一些关键挑战:
复杂的文件管理:通过云盘界面管理数十万张图片要方便得多。
按需预览:默认情况下,云盘仅列出文件,预览仅在点击文件时生成。这在很大程度上类似于 PhotoSwipe。(尽管 Zfile 有一种模式可以一次性预览所有图片,但我相信以后可以禁用它。)
Discourse 集成:我现在可以在 Discourse 帖子中添加一个“在线阅读”链接,点击后会打开云盘界面。看起来像这样:https://openttc.com/t/topic/8
资源效率:这种方法避免了传统图库或图片托管应用程序常见的资源浪费。阅读书籍的最佳方式是一次加载一页,这与照片集不同,照片集期望一次看到多张图片。同时加载多个书页也会在视觉上造成混淆,因为每一页看起来都非常相似。
我将 Discourse 用作我网站的主页,管理着 31 个类别中的约 5000 本书。每个帖子代表一本书,Zfile 云盘管理着每本书的单个内容页面。这是我迄今为止找到的最佳用户体验,并且在台式机、手机和平板电脑上都相对方便。我希望这能帮助到有类似需求的人。
几点说明:
Zfile 并非唯一选择。它的界面似乎主要支持中文,这对我来说是一个优势。如果您有任何更好的建议,请告诉我。
如果未来 Discourse 能够提供 3D 翻页插件(模拟真实的翻书体验,类似于 WordPress 可用的插件),也请告知我。
再次感谢!

4 个赞

您的项目看起来很有趣!

您尝试过将图片包装在 [grid] markdown 中吗?像 关于“魏伯陽 周易參同契 Cantong qi. Token for the Agreement...”类别 - 魏伯陽 周易參同契 Cantong qi. Token for the Agreement... - OpenTTC 这样的主题会更容易管理。

就我个人而言,我已将相册数字化并保存为 PDF 文件,然后上传到 Discourse 的主题中。然后,内联 PDF 预览主题组件允许我的成员直接在 Discourse 中滚动浏览它们。这样做的优点是书籍保持完整。

2 个赞

非常感谢!先生
最近我一直在进行开发,需要在多个服务器之间切换。因此,此帖子中引用的 openttc.com 链接可能不稳定。
我完成当前工作后,将在本帖中发布更新的链接,以展示我们讨论的结果(将 Zfile 嵌入 Discourse 帖子中,这可能对将来的人有所帮助)。
事实上,经过深思熟虑,我已暂时放弃了之前的方法。
原因是管理起来太麻烦了。如果以后添加新内容,我将不得不在 Discourse 和 Zfile 系统中分别管理它们并手动同步。
我目前正尝试将内容直接嵌入帖子中,格式为 PDF。一些单独的 PDF 文件大小超过 2GB,因此仍有许多问题需要慢慢处理……
感谢大家的关注。这个社区真的很可爱!
祝您身体健康,阖家幸福!

2 个赞

谢谢,也祝您和您的家人一切安好! :hugs:

我将关闭此主题,因为您似乎已经找到了一些解决问题的不错方案。如果您将来再次遇到挑战,可以开启新主题。