在 mindoc 的功能扩展中,除了之前已经被小伙伴解决的头像生成问题以外,还有一个是项目封面的自动生成。
这块想了好多个方案,主要有两个因素,一是来源,二是质量。总是空手套白狼,一穷二白,所以一开始想的是用一个纯算法实现绘制一幅图,这样的话,用分形可能会比较合适,但是每次现生成衣服漂亮的分形图形,时间是个问题,况且,也没有找到特别好的参数已经调优过的自动化算法。知乎上有一篇文章,与计算机生成图像有关,值得一看:《有哪些计算机生成的精美图形》。
后来因为文言编程在朋友圈里刷屏,找到了 https://github.com/LingDong-/,发现他有个自动绘制山水图的项目,进而还发现他有个自动绘制花卉工笔画的项目,应该可用,只是色彩确实太素雅了。
要不还是从在线资源的方向上寻找吧,想到了必应的壁纸。官方是有 API 的:https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=zh-CN
。接口参数的含义:
n
(必需):
1-8 请求数量,目前最多一次获取 8 张
format
(非必需):返回数据格式,不存在返回 xml 格式
js (一般使用这个,返回 json 格式)
xml(返回 xml 格式)
idx
(非必需):请求图片截止天数
0 今天
-1 截止至明天(预准备的)
1 截止至昨天,类推(目前最多获取到 7 天前的图片)
mkt
(非必需):地区
zh-CN/…
找找有没写好的解析、下载代码,于是找到了 https://github.com/xCss/bing。作者的在线站点(http://bing.ioliu.cn)提供了文档说明中的 API,好处是还提供了一定的图片处理能力,不合适的地方在于这是个 nodejs 项目,老夫的弱弱项。于是继续到 github.com 上定向寻找 go 的下载项目,有了以下收获。
– https://github.com/1995parham/gosimac
可以从 bing.com 或者 Unsplash 下载壁纸,依赖 go resty 库。最后更新于两月前。
– https://github.com/heliojuniorkroger/golang-bing-wallpaper
这是对上述官方 API 的最浅封装代码,有调用示例。最后更新于两年前。
– https://github.com/covrom/wallpaperloader
从 images.yandex.ru、Bing 或者 Unsplash 加载每日壁纸并每小时随机设置为桌面壁纸。这个程序是可以作为 Linux 的 service 程序运行的。最后更新于十月份。
– https://github.com/9ft/BingWallpaperGo
挺简单的一个从必应下载壁纸的程序,使用的技术简单粗暴。看上去是 macOS 平台的。今年三月份最后更新。
– https://github.com/internelp/GoBingWallpaper
获取 bing 每日壁纸,需配合任务计划使用。最简单直接的程序,只有 main.go,程序运行时输出的信息清晰明了。最后更新于三年前。
– https://github.com/genzj/gobingwallpaper
从 bing.com 拉取最新的壁纸。这个应用相对比较有特点的地方在于搭建时想的比较完整,例如命令行的处理,日志,国际化多语言子支持,且其内建了 Web 配置能力。三年前最后更新的项目。
– https://github.com/AielloChan/gowallpaper
一个 Windows 程序,go 写的,可以从 Unsplash/Baidu/Aibizhi/Bing/NationalGeographic 等站点拉图片,运行时指定站点,将下载回的图片设置为壁纸,并保存在当前目录下的 pics 目录里,还可以指定图片质量。三年前最后更新的项目。
可惜还没有看到集成了图片处理能力的项目。