Solitude主题起初只写了基于Canvas的本地取色功能。因为用的是平均色,所以取色的值并不准确,并且在少数床图的使用下,还是会有些问题出现。

MeuiCat3.3.0版本中就借鉴了Heo博客采用的文章封面图片主题色,而Heo实现的方式是由床图提供的纯色API来实现。具体实现可参照:生成封面图片主色来作为文章封面顶图

在一些自有床图或者是根目录资源下,则需要通过别的方式来进行处理图片的主题色获取。img2color则是一个获取图片主色调的API项目,使用的是Go语言,具有较高的性能,并支持自建以及Vercel部署。

img2color

img2color项目中,支持配置RedisMongodb数据库存缓。

在Solitude主题中,img2color未配置数据库存缓,可将取色功能设置为api模式。请求后的值将进行本地缓存。默认缓存时间为:12小时。

此功能的实现为,先检查本地存储是否缓存有并未过期(12小时)的值,如果没有则使用img2color函数进行取色。

实现较为简单,获取本地存储,再到存储。

img2color-Redis

而如若img2color配置了数据库进行存储数据,则可在Solitude主题中,将取色功能设置为api_redis模式。

在此功能模式下,将不会使用到本地存储。将直接进行img2color函数进行响应,API将自行检索数据库是否有对应的存缓。

取色三合一

在本地调试时,有些时候会用到本地图片进行调试。本地图片不属于线上资源,在取色模式选择了apiapi_redis时,API则会进行报错。

解决方法其实也可以很简单,使用笨方法。在本地调试时,将localhost的资源转用本地取色功能即可。

在某些程度上,也可以减少代码体量。一举两得。

贡献