本文完成于 2023 年 11 月
之前老苏介绍过 webp2jpg-online
,可以将 webp
格式的图片,转为 jpg
等,今天介绍的 WebP Server Go
是将 jpg
等转为 webp
格式
文章传送门:多功能图片转换器webp2jpg-online
什么是 WebP ?
WebP
它是由
与 PNG
相比,WebP
无损图像的尺寸小 26%
。在同等 SSIM
质量指数下,WebP
有损图像比同类 JPEG
图像小 25-34%
。【数据来自官网 https://webp.sh/#/2 】
什么是 WebP Server Go ?
WebP Server Go
是一款开箱即用的WebP
服务器。 该项目是用Go
写的WebP
服务,无需二次开发就能实现将JPG
、PNG
、BMP
、SVG
等格式的图片,转化成WebP
格式的服务,能够有效地减小图片体积、节省带宽、提升图片加载速度。
目前支持的图像格式:JPEG
、PNG
、BMP
、GIF
、SVG
、HEIC
、NEF
安装
在群晖上以 Docker 方式安装。
在注册表中搜索 webp-server-go
,选择第一个 webpsh/webp-server-go
,版本选择 latest
。
本文写作时,
latest
版本对应为0.10.2
;
卷
在 docker
文件夹中,创建一个新文件夹 webp-server
,并在其中建三个子文件夹 data
文件夹 | 装载路径 | 说明 |
---|---|---|
docker/webp-server/pics |
/opt/pics |
图片目录 |
docker/webp-server/exhaust |
/opt/exhaust |
图片缓存目录 |
docker/webp-server/metadata |
/opt/metadata |
图片元数据缓存目录 |
端口
本地端口不冲突就行,不确定的话可以用命令查一下
bash
# 查看端口占用
netstat -tunlp | grep 端口号
本地端口 | 容器端口 |
---|---|
3333 |
3333 |
默认没有对外暴露端口
需要点 +
号自行添加
环境
可变 | 值 |
---|---|
MALLOC_ARENA_MAX |
设为 1 |
更多的环境变量请参考官方的文档:https://docs.webp.sh/usage/configuration/
命令行安装
如果你熟悉命令行,可能用 docker cli
更快捷
bash
# 新建文件夹 webp-server 和 子目录
mkdir -p /volume1/docker/webp-server/{exhaust,metadata,pics}
# 进入 webp-server 目录
cd /volume1/docker/webp-server
# 运行容器
docker run -d \
--restart always \
--name webp-server \
-p 3333:3333 \
-v $(pwd)/pics:/opt/pics \
-v $(pwd)/exhaust:/opt/exhaust \
-v $(pwd)/metadata:/opt/metadata \
-e MALLOC_ARENA_MAX='1' \
webpsh/webp-server-go
也可以用 docker-compose
安装,将下面的内容保存为 docker-compose.yml
文件
yaml
version: '3'
services:
webp:
image: webpsh/webp-server-go
# image: ghcr.io/webp-sh/webp_server_go
container_name: webp-server
restart: always
ports:
- 3333:3333
volumes:
- ./pics:/opt/pics
- ./exhaust:/opt/exhaust
- ./metadata:/opt/metadata
environment:
- MALLOC_ARENA_MAX=1
然后执行下面的命令
bash
# 新建文件夹 webp-server 和 子目录
mkdir -p /volume1/docker/webp-server/{exhaust,metadata,pics}
# 进入 webp-server 目录
cd /volume1/docker/webp-server
# 将 docker-compose.yml 放入当前目录
# 一键启动
docker-compose up -d
运行
如果在浏览器中直接输入 http://群晖IP:3333
会显示错误 File extension not allowed! /
正确的使用方式是:
- 上传文件到
pics
目录
- 打开链接时,带上图片名称,例如:
http://群晖IP:3333/00.png
-
另存图片,默认扩展名已经是
webp
,虽然URL
没变,但实际上已经是image/webp
格式 -
文件大小比对,差异还是很明显的
这个文件在缓存目录中是能找到的
高级玩法
启用环境变量 ENABLE_EXTRA_PARAMS
,将其设置为 true
现在就可以在 URL
中通过添加 width
和 height
来控制图片的大小了,例如 http://群晖IP:3333/00.png?width=300&height=300
参考文档
webp-sh/webp_server_go: Go version of WebP Server. A tool that will serve your JPG/PNG/BMP/SVGs as WebP/AVIF format with compression, on-the-fly.
地址:https://github.com/webp-sh/webp_server_go
Introduction | WebP Server Documentation地址:https://docs.webp.sh/
WebP Server