imgproxy简介
imgproxy是一个快速、安全的独立服务器,用于调整远程图像的大小和转换。imgproxy 背后的指导原则是安全性、速度和简单性。
imgproxy 能够快速、轻松地动态调整图像大小,并且它有能力处理大量图像调整大小。imgproxy 是 Web 应用程序中所有图像调整大小代码(例如调整大小库或调用 ImageMagick 或 GraphicsMagic 的代码)的快速、安全的替代品。它也是处理远程图像不可或缺的工具。使用 imgproxy,您无需在每次更改时重复准备图像以适应您的设计。
官网给出的速度对比:
imgproxy安装部署
1. docker安装部署(官方推荐安装方式)
1.1. 拉取官方镜像
docker pull darthsim/imgproxy:latest
1.2. 启动docker镜像
docker run -d --name imgproxy --restart always -p 8081:8080 darthsim/imgproxy
上面命令运行结束,imgproxy已经启动起来。可以使用命令查看启动情况:
docker ps
你会看到如下显示:
或者可以浏览器打开 http://ip:8081,可以看到下面的页面:
可以使用下面请求去使用imgproxy代理服务去处理图片:
其中 xxxxxx 代表签名字符串,默认启动的docker容器没有开启签名功能,因此这个签名参数可以任意填写,我这里填写的xxxxx。
resize代表指示imgproxy要调整图片的大小,fill代表调整大小的模式是填充模式,一共有fit、fill、fill-down、force、auto五种模式可以选。400:400这个代表分辨率调整到400*400,后面的0代表是否启用enlarge模式,这个模式如果被启用,如果给定的大小大于图片的原始大小的话,imgproxy会放大图片。
rot代表图片旋转,90表示旋转度数。
plain表示后面的图片地址是明文模式。plain后面就是原始图片的地址。最后@png代表要将原始的jpeg图片转换为png格式。
更多处理参数可以查看原始文档 https://docs.imgproxy.net/generating_the_url。
2. ubuntu安装
2.1. 首先安装
sudo add-apt-repository ppa:dhor/myway
sudo apt-get update
sudo apt-get install libvips-dev
但如果您想使用 imgproxy 的所有功能,建议从源代码构建 libvips:https: //github.com/libvips/libvips/wiki/Build-for-Ubuntu
2.2. 安装最新版本的 Go
sudo add-apt-repository ppa:longsleep/golang-backports
sudo apt-get update
sudo apt-get install golang-go
2.3. 下载原文件
您可以通过克隆 GitHub 存储库来获取 imgproxy 源代码:
git clone https://github.com/imgproxy/imgproxy.git
cd imgproxy
或者通过下载源 tarball:
mkdir imgproxy
cd imgproxy
curl -Ls https://github.com/imgproxy/imgproxy/archive/master.tar.gz \
| tar -xz --strip-components 1 -C .
也可以指定特定版本:
mkdir imgproxy
cd imgproxy
curl -Ls https://github.com/imgproxy/imgproxy/archive/v2.13.1.tar.gz \
| tar -xz --strip-components 1 -C .
2.4. 安装 imgproxy
CGO_LDFLAGS_ALLOW="-s|-w" \
go build -o /usr/local/bin/imgproxy
2.5. 启动imgproxy(默认端口8080)
cd /usr/local/bin
imgproxy
检验方法同上
imgproxy配置
可以通过环境变量来配置imgproxy,改变其工作模式。介绍几个常用的配置项。其余更多的配置项可以参考官方文档https://docs.imgproxy.net/configuration
IMGPROXY_READ_TIMEOUT #读取原始图片的时间,如果imgproxy和原始图片的服务器之间的网络不是太好的话,可以适当调整这个参数
IMGPROXY_MAX_SRC_RESOLUTION #原始图片最大分辨率,默认是16.8,单位是百万像素,例如,如果一个图片的分辨率是5000*5000,其像素个数是25000000,即25百万像素,这个图片就会被拒绝处理。如果我们的原始图片有很多大图的话,就需要调整这个值了
IMGPROXY_MAX_SRC_FILE_SIZE #和上面的参数类似,指定原始图片的最大大小,默认不限制
IMGPROXY_ALLOWED_SOURCES #设置允许的原始图片地址,用逗号隔开,这样可以防止别人滥用服务。
综合上述参数,启动imgproxy的命令调整为:
docker run -d --name imgproxy --restart always --env "IMGPROXY_MAX_SRC_RESOLUTION=25" --env "IMGPROXY_ALLOWED_SOURCES=https://img.xxxx.cc/,https://img.yyyy.cc/" --env="IMGPROXY_READ_TIMEOUT=1000" darthsim/imgproxy