在使用阿里云 OSS 对象存储服务时,OSS 提供了图片处理的服务,可以通过在请求图片对象的 url 上携带各种图片处理的参数,如:x-oss-process=image/resize,w_100 等来实现图片的缩放、裁剪、水印、内切圆等等图片处理方式。
类似阿里云的这个图片处理服务,我们也可以通过 MinIO 和一个开源的图片处理服务项目 images.weserv.nl 来自建一套同时支持图片处理(和部分兼容阿里云图片处理样式)的对象存储系统。
images.weserv.nl 这个开源项目的最新版本 5.x 在 4.x 版本上完全使用 C++ 重写了,大幅度提升了性能,而 4.x 主要是基于 openresty + lua 来实现的,具体的重写原因,主要也是因为 images.serv.nl 的流量请求越来越多,对图片处理的性能要求也越来越高,所以团队从 5.x 之后完全重写了。不过,我们这里的演示仍然是基于 images.weserv.nl 4.x 分支的 :)