开端
我在小红书上是一个分享各种效率工具使用教程,以及一些效率工作方法的博主。
但是各位也都很清楚,很多效率工具的使用,不是一两句话说得明白的。
看教程的读者,大多数都是新手,这就注定了你不可能用很简单的文字把一件事说清楚,有时候甚至一个功能点,要从头到尾,点对点地说明,都需要费一番功夫。
小红书上笔记的字数限制是 1000 字,但是我的很多表达,或者一些教程的使用是超过 1000 字的,而且文字笔记中也是不能插入图片的。
这对于我这样习惯了“少数派”这种图文编辑器的人来说,很是痛苦。
但是限制越多,往往人的创造力就越强,而在这样的限制下,就诞生了一些神奇操作。
小红书是一个图文社区,虽然它的文字限制是 1000 字,但是我们可以把文字生成图片,用图片来表达我们想要输出的图文。
它的图片限制是 18 张,这个张数可太多了。
所以在这里,我就分享一下当我写了一篇长的图文之后,是如何转换成剪切好适合阅读的,多张短图的小红书半自动图片生成流程。
写作
首先,我们需要一款写作软件。
我使用的是 Obsidian 来进行我的所有写作。

当然,你也可以使用 Ulysses,Word,甚至文本编辑器写文,都没有问题。
工具只是载体,内容才是灵魂。
我在这里,顺便想聊聊我使用 Obsidian 的原因。
借用 Obsidian 创始人的一句话。
如果你想要你的笔记在 30 年后还能够看到的话,那么它在 30 年前同样应该能够使用。
我很认同这句话,因为我经历过两次线上笔记软件的笔记搬迁事件,很痛苦,所以我在几年前就彻底断了线上笔记这条路。
我认为笔记保存在本地很重要。
我不想有哪一天,某个笔记软件公司倒闭之后,我所有的心血都付之一炬。
而像这样的事情,已经发生过不止一次。
雅虎关闭了在中国的邮箱服务。
新浪关闭了自己的微盘。
网易关闭了网易相册。
要把人类文明的记忆保存亿万年, 唯一的做法就是把字刻在石头上,本地文件就是互联网时代刻在属于我们自己的石头(硬盘)上的文字。
本地工具这么多,可为什么是 Obsidian 呢?
最重要的,Obsidian 只是一个管理软件。
你真正创造的,是那一个个后缀为 md 的本地笔记文件。
就算没有 Obsidian,你哪怕使用记事本,都能打开自己写的东西。
有些本地笔记软件,会自己创建一些格式,虽然它的源文件保存在本地,但脱离了这个软件,你就无法打开。这样也算不得通用。
除此之外,我选择 Obsidian ,还因为它具备极强的拓展性,社区性很强。
没有任何一个工具能够适配全部的人。
与其给别人一把瑞士军刀,不如给他一个把手,他想装什么就装什么。

生成
Obsidian 是一个基于 markdown 的笔记软件。
markdown 的好处,就是可以让人不用去管 word 中那繁琐复杂的格式设置,而只需要进行文字录入。
根据你输入的文本,以及文字格式标注,会自动生成相应的格式。
但是这样有一个问题,那就是在 Obsidian 中,我们自己看自己的笔记,固然是赏心悦目,格式严整。
可想要分享给别人时,就会遇到问题。
如果笔记字数不多还好,可以直接截图。
笔记字数太多,也可以直接导出 pdf 分享给朋友。
可如果笔记就一两千字,好不容易写好,想要发布社交媒体上时,格式瞬间就混乱了。
而且,如果我们的笔记内容中有图片,那分享起来更是难上加难。
所以我们能够看到很多博主,都是将自己创作的文字内容,通过长图片的形式进行分享。
这样格式不容易出错,观感也很好。
但不管你使用什么软件,在将一篇文章写好之后,你需要先生成一张长图。
其他软件怎么做我不知道,但是 Obsidian 是有这样的插件。
你看,社区化,拓展性强的优势出来了吧?你想要的功能,大概率别人已经做过了。
插件:Export Image Plugins

该插件,可以直接将当前笔记,直接生成长图。
在 Obsidian 中,通过按下 ctrl+p 或 command+p 打开命令框,输入 export,选择该命令。

即可弹出设置框。

在右侧可以直接进行预览,生成的图片的样子。
还可以在右下角生成作者信息,生成水印等。
保存好的长图,可以直接进行查看,但是如果想要在小红书这样对长图支持不友好的软件上查看,我们还需要对长图进行切分。
手动切分太过于繁琐,所以我写了一个 python 程序帮我做这件事。
切图
代码分享在文章末尾,但我建议你看完该部分,拿到代码后进行修改时也能知道从哪里入手。
实现逻辑
首先拿到一张长图,我们要将其进行切分。
那第一步,就是需要实现切分的代码。
先不用管太多的判断,我们将切分的代码先实现出来。

在该函数中,我们定义了三个输入。
分别是图片路径,切分像素的数组,以及图片的输出路径。
图片路径和图片的输出路径理解起来很简单,就是你要切什么图片,以及图片输出后保存在哪。
切分像素的数组就有点复杂了,它保存的,是一个从 0 开始,一直到图片高度的一个数组。
这个数组中,按照我们设定的像素间隔,生成了一串。
比如[0,50,100,150]
图片就是按照数组输入的数字,将其作为像素高度进行切分的。
这个数组肯定不是我们手动输入的,同样有一个函数实现该功能。

该函数在获取到图片的高度后,我们会手动输入需要切分的高度。
换句话讲,就是每张图片,我们想要多高。
该数组会自动被生成出来。
但是直接按照该数组切分有个问题。
如果切分的高度,正好有数字怎么办?
那文字不是正好被划分成两截了吗?
这样的切图,是不方便阅读的。
所以,我们需要判断,切分的高度,是否存在文字。

因为我生成的长图背景色为白色,所以我这里就是在判断指定行的像素是否全部为白色。
如果你的背景色为其他颜色,可以在这里调整颜色。

还有最后一步,如果判断该高度存在文字,那我们要将像素高度往上移,一直移动到没有文字的地方,我们再进行切图。

这段代码就是实现了这个功能。

拿到该代码后,你只需要修改这三个地方的参数,就可以实现该功能了。 当然,前提是你生成的长图,跟我的一样,背景色都是白色。
可视化
该代码是纯代码版本,每一次切图都需要打开一次代码,然后运行,太过于繁琐了。
我后续添加了一些可视化代码,直接在本地生成了一个应用文件,每一次需要切图的时候,直接打开应用,选择图片进行切分,一步到位。
这样会更加方便。

代码也一并奉上,供大家参考使用。
代码仓库
代码链接在此,各位请自取。 https://github.com/s632533290/split_long_image

其中 code_split 是纯代码版本,main.py 是可视化版本。
因为我自己是苹果系统,所以无法生成 windows 的应用程序,还望大家见谅。
后记
整个工作流程,其实是基于我个人的需求,进行的半自动化改造。
要说能提高多少效率呢,也不尽然,就是帮我减少了一些繁琐的操作而已。
在整个流程中,其实我也使用到了很多工具,并不是一站式的解决方案。
按照常规意义上 All in one 的一站式高效率方案,那我应该去开发一个 Obsidian 插件,在插件上开发切图功能,直接输出切好的图。
但是在这里,我可能要提一个有些反常的逻辑,这样的一站式,在我看来,并不意味着高效率。
因为我需要去学习 Obsidian 的插件编程语言,我之前了解过,这对于我来说学习成本太高,而且学习之后的可复用性太差。
只是为了编一个插件,而去学习,性价比太低了。
我之前也干过许多,为了所谓“高效率”而去学习各种复杂软件的事,事后回想起来,觉得这是本末倒置。
工具的学习,是很耗费精力的一件事,尤其是当它需要嵌入到你已经形成习惯的工作流当中时,你的精力很多时候需要用在对抗习惯惯性上面,有时反而会弄巧成拙。
我个人认为的高效,是利用好自己手边的工具,做最低程度的改造,而且要追求性价比。
学半年编程,就是为了每天切图时剩 20 秒,这样真的高效吗?
所以,我拿出了这么一个我自己开发起来最简单,适用性最强的小红书长图片发送流程。
至少在现阶段,这是我自己认为的高效。