Image2webp
项目是使用golang编写的支持多种图片格式实时转码成Webp
格式的图片的应用程序。
目前支持JPG
,JPEG
, PNG
, BMP
, GIF
这些格式转码成Webp
格式。
Webp
格式能够在不影响图片质量的情况下显著的缩小图片体积,从而提升网络传输的速度,节省带宽流量资源。
本项目还支持Webp
格式的缩略图功能,也是实时转码,能够无侵入的配置到现有服务器中,只需要在nginx
中做一些转发,不用更改任何其他逻辑。
本项目的最佳实现是在图片服务器中启动本服务,在nginx或者其他web服务器中配置转发,
只需要匹配^(.+)_webp(_(\d+)_(\d+)(.*))?$
这个url格式就能转发到image2webp程序中,从而输出webp格式的图片。
如果是前端访问图片,在请求量很大的时候,这种实时转码的方式会造成cpu性能不足,所以针对大请求量的情况, 可以选择开启缓存,设置缓存目录,生成的webp文件会写入该目录。 把cdn图片缓存有效期设置的长一点,本服务只是回源使用,那样就很完美了。
编译是非常简单的,确保你的go版本是1.16
以上,并且打开了mod
的支持。
执行make
命令就自动编译好了.
当然你也可以手动执行全路径编译命令
$ go build -v -o image2webp
编译成功后,你可以执行
$ ./image2webp start --config=./config.json
启动它
config.json
中是json格式的配置.
image2webp
部署也是很方便的,只需要把编译的二进制文件直接放到服务器上去运行,
再配置一下前端代理,具体可以参考nginx.conf
。
部署好后的效果如下:
http://image.example.com/images/timg.jpeg
http://image.example.com/images/timg.jpeg_webp
http://image.example.com/images/timg.jpeg_webp_100_100
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。