ZSY's Secret Garden

It's a land of magic.

0%

Hexo博客中插入图片

最近在朋友的安利下搭建了一个Hexo+Github Pages的博客,最大的感觉是简单方便,直接把写好的Markdown复制过来就可以发布了,全程甚至不需要打开浏览器。今天遇到一个小问题,就是发布的博客里面的图片无法显示了。这里记录了我的一些方法。

基本方法

官方推荐的方法是把图片放到资源文件夹里。Hexo自带一个全局的资源文件夹,只要把图片放到source/images文件夹中,就可以通过类似![](/images/image.jpg)的方式去引用了。

独立的资源文件夹

如果把图片放到全局的文件夹里,当博文越来越多的时候,势必会难以管理。所以可以打开Hexo内置的独立资源文件夹的功能,只要修改_config.xml文件即可:

_config.yml
1
post_asset_folder: true

设置好之后,当使用hexo new 'postname'创建博文的时候,会同时生成.md文件和同名的文件夹。把图片放置在这里,就可以使用相对路径![](example.jpg)去引用它了。

在主页上正常显示

这样处理之后在博文中已经能正常显示图片了,可是在主页上还不能,因为这里使用的都是相对路径。在现在的版本中,可以使用特殊的tag来解决这个问题:

1
{% asset_img example.jpg %}

这是官方推荐的方法,但是这不是Markdown的语法,这意味着如果你写的是MD,那么在发布的时候需要把所有图片修改成这样的形式!那有没有更优雅一点的方法呢?好在比较新的版本中已经加入这个功能了,只需要修改如下选项:

_config.yml
1
2
3
4
post_asset_folder: true
marked:
prependRoot: true
postAsset: true

这样![](image.jpg)就会被替换成绝对地址了,就和tag的方法是一样的。

设置图片尺寸

看上去已经比较完美了,还有最后一个小问题:一些图片是以HTML标签的形式插入了,主要是为了调节图片的尺寸,例如<img src="image.jpg" style="zoom:80%;">,这也是Markdown允许的语法。遗憾的是,这种方式插入的图片暂时无法被自动替换成绝对路径。

我觉得解决这个问题最简单的办法就是手动把路径设置成绝对路径,也就是类似<img src="/2020/01/02/postname/image.jpg">的形式,这个路径可以到加载出来的图片里面去找。有一些插件可以帮我们自动完成这个转换,不过我还没有用到,也就暂时先不提了~

使用外链

另外一种比较流行的方法是将图片上传到图床上,然后使用Web链接去引用这个图片。这种方法我还没试过,因此就不多说了。