Ruby Jekyll:在不使用外部插件的情况下获取图像的宽度/高度

Ruby Jekyll:在不使用外部插件的情况下获取图像的宽度/高度,ruby,jekyll,github-pages,Ruby,Jekyll,Github Pages,我想自动为我的所有图像添加高度和宽度属性。这完全是通过完成的,但我在GitHub页面上托管我的站点,不支持外部插件 问题:如何在不使用插件的情况下预先填充图像的高度/宽度属性 我为什么需要这个? 即使没有高度和宽度也能很好地工作,但我想指定它们,因为从SEO的角度来看这很重要(你可以找到一些关于其重要性的细节) 这个问题似乎适用于标记文件中的内容图像。默认情况下,这些图像没有设置宽度或高度 简短的回答 您可以在标记中直接在HTML中设置宽度和高度,如下所示: # Markdown title

我想自动为我的所有图像添加
高度
宽度
属性。这完全是通过完成的,但我在GitHub页面上托管我的站点,不支持外部插件

问题:如何在不使用插件的情况下预先填充图像的高度/宽度属性

我为什么需要这个?

即使没有
高度
宽度
也能很好地工作,但我想指定它们,因为从SEO的角度来看这很重要(你可以找到一些关于其重要性的细节)

这个问题似乎适用于标记文件中的内容图像。默认情况下,这些图像没有设置宽度或高度


简短的回答

您可以在标记中直接在HTML中设置宽度和高度,如下所示:

# Markdown title

paragraph

<img src="/path/to/image.jpg" width="400" height="300" />
#降价标题
段落

长答案

如果没有插件,您无法通过编程方式检索图像的宽度和高度,因此当您使用(纯)标记时,您会得到一个没有宽度和高度属性的图像。问题是为什么要首先添加宽度和高度。设置宽度和高度可以防止回流,但在加载时会留下一个很大的缺口。这真的更好吗?它看起来确实不好看。对于这个问题,渐进式JPG是一个非常好的解决方案,但我不喜欢设置它们的宽度和高度,因为“无图像”看起来很好,渐进式JPG也总是很好

你说你想要它的原因是搜索引擎优化,但我想不出任何

如果你的网站速度太慢,你真的想在回流之前与图片下方的内容进行交互,那么合理的解决方案是让你的网站加载得更快


但是,如果用户的连接速度非常慢,则可能需要手动将图像添加到HTML中的标记中。有关代码示例,请参见简短答案。

使用编写内部过滤器来完成此操作相当简单。您可以在项目的
\u plugins
目录中定义过滤器(在

作为一个非常粗略的例子,您可以这样做:

# Markdown title

paragraph

<img src="/path/to/image.jpg" width="400" height="300" />
需要“fastimage”
模块ImageSizeFilter
def图像大小(源,尺寸=零)
#获取图像尺寸,失败时抛出错误
#注意:您可能需要清理此处提供的输入字符串
#见:https://github.com/sdsykes/fastimage#security
大小=FastImage.size(源,失败时提升:真)
#返回请求的维度,如果未指定任何内容,则返回两个维度
如果维度='w'返回大小[0]
如果维度='h'返回大小[1]
返回尺寸,除非尺寸
#如果请求的维度无效,则失败
引发“请求的图像大小维度无效:”+维度
结束
结束
液体::模板.寄存器过滤器(ImageSizeFilter)
这将是这样使用的:



当然,这仍然不能直接用于GitHub页面,因为不支持自定义插件。一般来说,要使用自定义插件,一个解决方案是。

“不支持外部插件的地方。”:这就是我最近推荐Hugo的原因:@VonC谢谢,但正如我前面提到的,我不选择它。首先,我需要重做我的项目。其次,我需要更改主机,因为GitHub页面不支持Hugo(我需要提交我不想要的预编译html文件)。最后,快速的谷歌搜索显示,
height
width
计算没有内置的解决方案,所以我需要自己去弄清楚。我不明白使用雨果对我有什么好处。如果我遗漏了什么,请解释一下。为什么需要计算宽度和高度。我从来都不需要它们。我错过了什么吗?我还不清楚你的目标是什么。。。防止回流?这与SEO有什么关系?高度和宽度使初始布局更快(图像无需加载即可渲染),并使使用CSS缩放图像更容易。是的。。。缺少alt属性。。。但为了简洁起见,这样做是有目的的。