https://hub.docker.com/r/darthsim/imgproxy
https://www.github.com/imgproxy/imgproxy
https://docs.imgproxy.net/
docker run -d --name imgproxy --restart always -p 90:8080 --privileged=true --user=root -e TZ='Asia/Shanghai' --ulimit nofile=262144:262144 -e IMGPROXY_MAX_SRC_RESOLUTION='30' -e IMGPROXY_ALLOWED_SOURCES='https://img.htmltoo.com/' -e IMGPROXY_READ_TIMEOUT='1200' -e IMGPROXY_WRITE_TIMEOUT='30' -e IMGPROXY_JPEG_PROGRESSIVE='true' -e IMGPROXY_ENFORCE_WEBP='true' darthsim/imgproxy
http://g.htmltoo.com:90
docker exec -it imgproxy /bin/bash
-libvips
https://github.com/libvips/libvips/
apt-get install -y wget vim net-tools curl
cd /var/lib/dpkg
mv info info.bak
mkdir info
apt --fix-broken install
apt install build-essential ninja-build python3-pip bc wget
dpkg -r ghostscript
apt install libvips
apt install libvips-tools
apt-get install libvips-dev
-e IMGPROXY_ALLOWED_SOURCES='https://img.xxxx.cc/,https://img.yyyy.cc/'
---本地图片
IMGPROXY_LOCAL_FILESYSTEM_ROOT=/path/to/project/images
-300x200 will look like this:
http://imgproxy.example.com/insecure/rs:fit:300:200:no:0/plain/local:///logos/imgproxy.png@jpg
----S3存储
-e AWS_ACCESS_KEY_ID=my_access_key -e AWS_SECRET_ACCESS_KEY=my_secret_key
---minio存储
-e AWS_ACCESS_KEY_ID='my_access_key' -e AWS_SECRET_ACCESS_KEY='my_secret_key' -e IMGPROXY_S3_ENDPOINT='http://'
---图片案例
https://b.htmltoo.com/blog-p2421.html
---将其转换为 400*400的图片
http://g.htmltoo.com:90/xxxxxx/resize:fill:400:400:0/plain/https://img.htmltoo.com/ueditor/image/20230916/1694843200104767.png@webp
---将其转换为200*200的图片,并旋转90度
http://g.htmltoo.com:90/xxxxxx/resize:fill:200:200:0/rot:90/plain/https://img.htmltoo.com/ueditor/image/20230916/1694843200104767.png@webp
其中 xxxxxx 代表签名字符串,默认启动的docker容器没有开启签名功能,因此这个签名参数可以任意填写,我这里填写的xxxxx。 resize代表指示imgproxy要调整图片的大小,fill代表调整大小的模式是填充模式,一共有fit、fill、fill-down、force、auto五种模式可以选。400:400这个代表分辨率调整到400*400,后面的0代表是否启用enlarge模式,这个模式如果被启用,如果给定的大小大于图片的原始大小的话,imgproxy会放大图片。 plain表示后面的图片地址是明文模式。plain后面就是原始图片的地址。最后@png代表要将原始的jpeg图片转换为png格式。
https://docs.imgproxy.net/generating_the_url
https://docs.imgproxy.net/usage/processing
---添加缩放参数,例如在图片地址后面添加?sm,将会生成一个最大宽度为640px的缩略图。更多参数如下:
xs -- 320px
sm -- 640px
md -- 800px
lg -- 1024px
xl -- 1280px
xxl -- 1600px
3xl -- 2048px
4xl -- 2560px
5xl -- 3264px
6xl -- 4080px
IMGPROXY_READ_TIMEOUT #读取原始图片的时间,如果imgproxy和原始图片的服务器之间的网络不是太好的话,可以适当调整这个参数
IMGPROXY_MAX_SRC_RESOLUTION #原始图片最大分辨率,默认是16.8,单位是百万像素,例如,如果一个图片的分辨率是5000*5000,其像素个数是25000000,即25百万像素,这个图片就会被拒绝处理。如果我们的原始图片有很多大图的话,就需要调整这个值了
IMGPROXY_MAX_SRC_FILE_SIZE #和上面的参数类似,指定原始图片的最大大小,默认不限制
IMGPROXY_ALLOWED_SOURCES #设置允许的原始图片地址,用逗号隔开,这样可以防止别人滥用服务。
IMGPROXY_WRITE_TIMEOUT 设置将图像写入客户端的超时时间(以秒为单位)
IMGPROXY_WATERMARK_PATH 设置水印图像的本地路径,如果启用了水印功能,imgproxy将使用此图像作为水印
IMGPROXY_FALLBACK_IMAGE_PATH 设置备用图像的本地路径,如果源图像无法加载或处理,imgproxy将使用此图像作为替代
IMGPROXY_LOCAL_FILESYSTEM_ROOT 设置本地文件系统的根目录,如果源URL以local://开头,imgproxy将从此目录中查找文件
IMGPROXY_IGNORE_SSL_VERIFICATION 设置是否忽略SSL证书验证,如果为true,imgproxy将不检查源服务器的SSL证书是否有效
IMGPROXY_JPEG_PROGRESSIVE 设置是否生成渐进式JPEG图像,如果为true,imgproxy将生成可以逐步显示的JPEG图像
IMGPROXY_PNG_INTERLACED 设置是否生成交错PNG图像,如果为true,imgproxy将生成可以逐步显示的PNG图像
IMGPROXY_ENFORCE_AVIF 设置是否强制使用AVIF格式,如果为true,imgproxy将忽略请求中指定的格式,并始终生成AVIF图像(浏览器不支持则忽略)
IMGPROXY_ENFORCE_WEBP 设置是否强制使用WEBP格式,如果为true,imgproxy将忽略请求中指定的格式,并始终生成WEBP图像(浏览器不支持则忽略)