能将图片转为WebP格式的WebP Server Go

本文完成于 2023 年 11 月

之前老苏介绍过 webp2jpg-online,可以将 webp 格式的图片,转为 jpg 等,今天介绍的 WebP Server Go 是将 jpg 等转为 webp 格式

文章传送门:多功能图片转换器webp2jpg-online

什么是 WebP ?

WebP 它是由 Google 开发的一种现代图像格式,旨在提供更高的图像压缩效率和更小的文件大小,同时保持良好的图像质量。

PNG 相比,WebP 无损图像的尺寸小 26%。在同等 SSIM 质量指数下,WebP 有损图像比同类 JPEG 图像小 25-34%。【数据来自官网 https://webp.sh/#/2

什么是 WebP Server Go ?

WebP Server Go 是一款开箱即用的 WebP 服务器。 该项目是用 Go 写的 WebP 服务,无需二次开发就能实现将 JPGPNGBMPSVG 等格式的图片,转化成 WebP 格式的服务,能够有效地减小图片体积、节省带宽、提升图片加载速度。

目前支持的图像格式:JPEGPNGBMPGIFSVGHEICNEF

安装

在群晖上以 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! /

正确的使用方式是:

  1. 上传文件到 pics 目录
  1. 打开链接时,带上图片名称,例如:http://群晖IP:3333/00.png
  1. 另存图片,默认扩展名已经是 webp,虽然 URL 没变,但实际上已经是 image/webp格式

  2. 文件大小比对,差异还是很明显的

这个文件在缓存目录中是能找到的

高级玩法

启用环境变量 ENABLE_EXTRA_PARAMS,将其设置为 true

现在就可以在 URL 中通过添加 widthheight 来控制图片的大小了,例如 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

地址:https://webp.sh

相关推荐
奥格列的魔法拖鞋~1 小时前
Docker-LNMP架构 创建多项目- 单个ngixn代理多个PHP容器服务
nginx·docker·eureka·架构·php·lnmp
为什么要内卷,摆烂不香吗5 小时前
Docker容器技术全面解析(一):入门
docker·微服务·容器
探云抛雾؁ۣۖ8 小时前
Docker 实战:情感分析系统-容器化部署全流程(sa-logic、sa-webapp、sa-frontend )
运维·docker·容器·web app·情感系统
hkNaruto10 小时前
【Docker】openEuler 使用docker-compose部署gitlab-ce
docker·容器·gitlab
thulium_20 小时前
使用 Docker 部署 PostgreSQL
docker·postgresql·容器
江湖有缘20 小时前
【Docker项目实战】使用Docker部署Vikunja任务管理工具
docker·容器·eureka
秦曱凧1 天前
NAS上使用Docker部署网页版双人对战五子棋
docker
janthinasnail1 天前
使用Docker安装MeiliSearch搜索引擎
搜索引擎·docker
川石课堂软件测试1 天前
JMeter并发测试与多进程测试
功能测试·jmeter·docker·容器·kubernetes·单元测试·prometheus
吐个泡泡v1 天前
Docker部署MySQL完整指南:从入门到实践
mysql·docker·容器·部署