无缝将图片资源转换为WebP格式
编辑WebP 介绍
WebP 格式是一种现代的图像文件格式,由 Google 于2010年推出。它旨在提供更好的压缩效率,以减少文件大小并提高加载速度,特别是在网页上使用的标准图像格式(如 JPEG、PNG 和 GIF)的情况下。
使用 WebP Server Go 程序,可便捷的将 JPEG、PNG 等格式的图片动态转换为 WebP 格式,并且它也支持缓存,相同的图像请求在第一次转换后会存储在缓存中,后续请求可以直接从缓存中获取,无需再次转换。利用 Go 的高性能特性,WebP Server Go 能够高效处理大量并发请求,并快速转换图像。
个人使用案例
个人实测,使用 WebP Server Go 转换的 WebP 图片,某些图片可达 90% 的恐怖压缩率:
左侧的图片为 WebP 格式(虽然图片路径为 PNG 后缀,但实际返回的是 WebP 格式),尺寸为 1200x700 像素,文件大小不到 50KB。而右侧的原始 PNG 图片(经过压缩处理)约为 500KB。
重要说明:此数据仅基于本次测试的图片,转换质量为默认值(80%)。
部署 WebP Server Go 程序
本文将简要介绍使用 Docker Compose 进行部署,其他部署方式和参数请参考 WebP Server Go 文档。
在 docker-compose.yml 文件的目录下,运行 docker-compose up -d 命令来启动服务。以下是 docker-compose.yml 文件的内容:
version: '3'
services:
webp:
image: webpsh/webp-server-go
restart: always
environment:
- WEBP_ALLOWED_TYPES=* # 将所有支持的类型都进行转换
- WEBP_ENABLE_EXTRA_PARAMS=true # 开启图像转换,例如在路径后添加 ?width=20 参数
volumes:
- /path/to/pics:/opt/pics # 源文件目录
- ./exhaust:/opt/exhaust # 缓存目录
- ./metadata:/opt/metadata # 元数据目录
ports:
- 127.0.0.1:3333:3333
使用 nginx 将图片资源路径反向代理到 127.0.0.1:3333,从而实现将图片资源无缝转换为 WebP 格式。
以/upload/
,在 nginx 配置中的 server 块内添加该代码:
location ^~ /upload/ {
proxy_pass http://127.0.0.1:3333;
proxy_set_header X-Real-IP $remote_addr;
proxy_hide_header X-Powered-By;
proxy_set_header HOST $http_host;
add_header Cache-Control 'no-cache, max-age=86400';
}
注意将 docker-compose.yml 文件中的源文件目录修改为 Halo 的存储策略目录。
- 1
- 0
-
分享