imagor 是一个快速、安全的图像处理服务器和 Go 库。
imagor 使用了最高效的图像处理库之一 libvips。它通常比使用最快的 ImageMagick 和 GraphicsMagick 设置快 4-8 倍。imagor 实现了 libvips 的流式处理,促进了并行处理管道,实现了高网络吞吐量。
imagor 具有大量图像处理用例,可作为 HTTP 服务器使用,并提供一流的 Docker 支持。它采用 thumbor URL 语法,是一个高性能的替代品。
imagor 是一个以速度、安全性和可扩展性为重点构建的 Go 库。此外还有 imagorvideo,通过 ffmpeg C 绑定提供视频缩略图功能。
docker run -p 8000:8000 shumc/imagor -imagor-unsafe -imagor-auto-webp
原始图像:
https://yellow-cdn.veclightyear.com/ab5030c0/d00cfff8-87e8-4cfd-b18b-b3d15adb24cf.png
https://yellow-cdn.veclightyear.com/ab5030c0/a3cf1a5a-3d15-46b1-9b8c-751b9dd82b72.gif
https://yellow-cdn.veclightyear.com/ab5030c0/c9315c15-373a-4a80-bb73-2f021a4da807.png
<img src="https://yellow-cdn.veclightyear.com/ab5030c0/d00cfff8-87e8-4cfd-b18b-b3d15adb24cf.png" height="100" /> <img src="https://yellow-cdn.veclightyear.com/ab5030c0/a3cf1a5a-3d15-46b1-9b8c-751b9dd82b72.gif" height="100" /> <img src="https://yellow-cdn.veclightyear.com/ab5030c0/c9315c15-373a-4a80-bb73-2f021a4da807.png" height="100" />
尝试以下图像 URL:
http://localhost:8000/unsafe/fit-in/200x200/filters:fill(white)/https://yellow-cdn.veclightyear.com/ab5030c0/d00cfff8-87e8-4cfd-b18b-b3d15adb24cf.png
http://localhost:8000/unsafe/200x200/smart/filters:fill(white):format(jpeg):quality(80)/https://yellow-cdn.veclightyear.com/ab5030c0/d00cfff8-87e8-4cfd-b18b-b3d15adb24cf.png
http://localhost:8000/unsafe/fit-in/-180x180/10x10/filters:hue(290):saturation(100):fill(yellow)/raw.githubusercontent.com/cshum/imagor/master/testdata/gopher.png
http://localhost:8000/unsafe/30x40:100x150/filters:fill(cyan)/raw.githubusercontent.com/cshum/imagor/master/testdata/dancing-banana.gif
http://localhost:8000/unsafe/fit-in/200x150/filters:fill(yellow):watermark(raw.githubusercontent.com/cshum/imagor/master/testdata/gopher-front.png,repeat,bottom,0,40,40)/raw.githubusercontent.com/cshum/imagor/master/testdata/dancing-banana.gif
<img src="https://yellow-cdn.veclightyear.com/ab5030c0/8f11b183-c8df-43e3-b16c-8f89daebcfbc.jpg" height="100" /> <img src="https://yellow-cdn.veclightyear.com/ab5030c0/f3ab5976-bf86-40b8-89d7-777d2819fb52.jpg" height="100" /> <img src="https://yellow-cdn.veclightyear.com/ab5030c0/3bb6b63f-8c7e-43de-b51a-d9a562d7b3b1.jpg" height="100" /> <img src="https://yellow-cdn.veclightyear.com/ab5030c0/c8357dfc-120a-4256-b68a-a1ad0d2ad2a7.gif" height="100" /> <img src="https://yellow-cdn.veclightyear.com/ab5030c0/903cd372-84f2-4df9-b925-c36ac4ccd34e.gif" height="100" />
imagor 端点是一系列 URL 部分,定义了图像操作,后跟图像 URI:
/HASH|unsafe/trim/AxB:CxD/fit-in/stretch/-Ex-F/GxH:IxJ/HALIGN/VALIGN/smart/filters:NAME(ARGS):NAME(ARGS):.../IMAGE
HASH
是 URL 签名哈希,如果使用不安全模式则为 unsafe
trim
使用左上角像素颜色移除图像周围的空白AxB:CxD
表示在左上角点 AxB
和右下角点 CxD
手动裁剪图像。坐标也可以提供为 0 到 1 之间的浮点值(图像尺寸的百分比)fit-in
表示生成的图像不应自动裁剪,而只是适应 ExF
指定的虚拟框stretch
表示将图像调整为 ExF
而不保持其纵横比-Ex-F
表示将图像调整为宽度和高度为 ExF
的大小。减号表示水平和垂直翻转GxH:IxJ
添加左上角填充 GxH
和右下角填充 IxJ
HALIGN
是裁剪的水平对齐。接受 left
、right
或 center
,默认为 center
VALIGN
是裁剪的垂直对齐。接受 top
、bottom
或 middle
,默认为 middle
smart
表示使用智能焦点检测filters
是要应用的图像过滤器操作管道,请参阅过滤器部分IMAGE
是图像路径或 URI
?
字符的图像 URI,这将干扰 URL 查询,应使用 encodeURIComponent
或等效方法进行编码过滤器 /filters:NAME(ARGS):NAME(ARGS):.../
是一系列将按顺序应用于图像的图像操作。例如:
/filters:fill(white):format(jpeg)/
/filters:hue(290):saturation(100):fill(yellow):format(jpeg):quality(80)/
/filters:fill(white):watermark(raw.githubusercontent.com/cshum/imagor/master/testdata/gopher-front.png,repeat,bottom,10):format(jpeg)/
imagor 支持以下过滤器:
background_color(color)
设置透明图片的背景颜色
color
颜色名称或不带"#"字符的十六进制RGB表达式blur(sigma)
对图片应用高斯模糊brightness(amount)
增加或减少图片亮度
amount
-100到100,增加或减少图片亮度的百分比contrast(amount)
增加或减少图片对比度
amount
-100到100,增加或减少图片对比度的百分比fill(color)
用指定颜色填充缺失区域或透明图片:
color
- 颜色名称或不带"#"字符的十六进制RGB表达式
focal(AxB:CxD)
或 focal(X,Y)
为自定义变换添加焦点区域或焦点:
AxB
和右下点CxD
的区域坐标,或一个点X,Y
指定。format(format)
指定图片的输出格式
format
接受jpeg、png、gif、webp、tiff、avif、jp2grayscale()
将图片转换为灰度hue(angle)
增加或减少图片色相
angle
增加或减少色相旋转的角度label(text, x, y, size, color[, alpha[, font]])
向图片添加文本标签。可以在图片内定位,指定对齐方式,支持颜色和透明度:
text
文本标签,也支持URL编码的文本。x
文本标签的水平位置:
left
、right
、center
分别表示左对齐、右对齐或居中y
文本标签的垂直位置:
top
、bottom
、center
分别表示垂直顶部对齐、底部对齐或居中size
- 文本标签字体大小color
- 颜色名称或不带"#"字符的十六进制RGB表达式alpha
- 文本标签透明度,0(完全不透明)到100( 完全透明)之间的数字。font
- 文本标签字体类型max_bytes(amount)
自动降低图片质量,直到图片大小低于指定的字节数amount
max_frames(n)
限制要加载的最大动画帧数n
orient(angle)
在调整大小和裁剪之前根据角度值旋转图片
angle
接受0、90、180、270page(num)
指定PDF的页码或动画图片的帧号,从1开始dpi(num)
指定PDF和SVG的渲染DPIproportion(percentage)
将图片缩放到图片尺寸的比例百分比quality(amount)
更改图片的整体质量,对png无效
amount
0到100,质量级别的百分比rgb(r,g,b)
每个RGB通道的颜色量(百分比)。范围从-100到100rotate(angle)
根据角度值旋转给定的图片
angle
接受0、90、180、270round_corner(rx [, ry [, color]])
用指定的背景颜色为图片添加圆角
rx
、ry
用作半径的像素量。如果未提供ry,则ry = rxcolor
颜色名称或不带"#"字符的十六进制RGB表达式saturation(amount)
增加或减少图片饱和度
amount
-100到100,增加或减少图片饱和度的百分比sharpen(sigma)
锐化图片strip_exif()
从结果图片中删除Exif元数据strip_icc()
从结果图片中删除ICC配置文件信息upscale()
如果使用了fit-in
,则放大图片watermark(image, x, y, alpha [, w_ratio [, h_ratio]])
向图片添加水印。可以在图片内定位,指 定alpha通道,并可选择根据图片大小调整水印大小
image
水印图片URI,使用为imagor配置的相同图片加载器x
水印的水平位置:
left
、right
、center
分别表示左侧、右侧或居中repeat
水印将水平重复y
水印的垂直位置:
top
、bottom
、center
分别表示顶部、底部或居中repeat
水印将垂直重复alpha
水印图片透明度,0(完全不透明)到100(完全透明)之间的数字。w_ratio
水印应适应的图片宽度百分比h_ratio
水印应适应的图片高度百分比这些过滤器不操作图片,但为imagor管道提供有用的实用工具:
attachment(filename)
在Content-Disposition
头中返回附件,浏览器将打开一个"另存为"对话框,文件名为filename
。当未指定filename
时,imagor将从图片源获取文件名expire(timestamp)
为内容添加过期时间。timestamp
是Unix毫秒时间戳,例如,如果内容在30秒内有效,那么在JavaScript中timestamp将是Date.now() + 30*1000
。preview()
即使启用了结果存储也跳过结果存储。对条件缓存有用raw()
响应原始未处理和未检查的源图片。图片仍从加载器和存 储加载,但跳过结果存储imagor的加载器
、存储
和结果存储
是从各种来源加载和保存图片的构建模块:
加载器
加载图片。在你希望从中加载图片但不修改它的地方启用加载器
,例如静态目录。存储
加载和保存图片。这允许后续对同一图片的请求直接从存储加载,而不是HTTP源。结果存储
加载和保存处理后的图片。这允许后续使用相同参数的请求从结果存储加载,节省处理资源。imagor提供内置适配器,支持HTTP(s)、代理、文件系统、AWS S3和Google Cloud Storage。默认情况下,HTTP加载器
用作后备。你可以选择启用适合你用例的其他适配器。
使用文件系统的Docker Compose示例,使用挂载卷:
version: "3" services: imagor: image: shumc/imagor:latest volumes: - ./:/mnt/data environment: PORT: 8000 IMAGOR_UNSAFE: 1 # 用于测试的不安全URL FILE_LOADER_BASE_DIR: /mnt/data # 通过指定基础目录启用文件加载器 FILE_STORAGE_BASE_DIR: /mnt/data # 通过指定基础目录启用文件存储 FILE_STORAGE_MKDIR_PERMISSION: 0755 # 可选 FILE_STORAGE_WRITE_PERMISSION: 0666 # 可选 FILE_RESULT_STORAGE_BASE_DIR: /mnt/data/result # 通过指定基础目录启用文件结果存储 FILE_RESULT_STORAGE_MKDIR_PERMISSION: 0755 # 可选 FILE_RESULT_STORAGE_WRITE_PERMISSION: 0666 # 可选 ports: - "8000:8000"
使用AWS S3的Docker Compose示例。也适用于S3兼容服务,如MinIO、DigitalOcean Space。
version: "3" services: imagor: image: shumc/imagor:latest environment: PORT: 8000 IMAGOR_SECRET: mysecret # URL签名的密钥 AWS_ACCESS_KEY_ID: ... AWS_SECRET_ACCESS_KEY: ... AWS_REGION: ... S3_LOADER_BUCKET: mybucket # 通过指定存储桶启用S3加载器 S3_LOADER_BASE_DIR: images # 可选 S3_STORAGE_BUCKET: mybucket # 通过指定存储桶启用S3存储 S3_STORAGE_BASE_DIR: images # 可选 S3_STORAGE_ACL: public-read # 可选 - 参见 https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl S3_RESULT_STORAGE_BUCKET: mybucket # 通过指定存储桶启用S3结果存储 S3_RESULT_STORAGE_BASE_DIR: images/result # 可选 S3_RESULT_STORAGE_ACL: public-read # 可选 ports: - "8000:8000"
为S3兼容服务(如MinIO、DigitalOcean Space)配置自定义S3端点:
S3_ENDPOINT: http://minio:9000 S3_FORCE_PATH_STYLE: 1
默认情况下,S3会将存储桶名称作为子域名添加到请求URL中:
http://mybucket.minio:9000/image.jpg
对于自托管端点来说,这可能并不理想。您也可以使用S3_FORCE_PATH_STYLE=1
切换到路径风格请求,这样主机名保持不变:
http://minio:9000/mybucket/image.jpg
设置以下环境变量可以覆盖S3加载器、存储和结果存储的全局AWS凭证:
AWS_LOADER_REGION AWS_LOADER_ACCESS_KEY_ID AWS_LOADER_SECRET_ACCESS_KEY S3_LOADER_ENDPOINT AWS_STORAGE_REGION AWS_STORAGE_ACCESS_KEY_ID AWS_STORAGE_SECRET_ACCESS_KEY S3_STORAGE_ENDPOINT AWS_RESULT_STORAGE_REGION AWS_RESULT_STORAGE_ACCESS_KEY_ID AWS_RESULT_STORAGE_SECRET_ACCESS_KEY S3_RESULT_STORAGE_ENDPOINT
使用Google Cloud Storage的Docker Compose示例:
version: "3" services: imagor: image: shumc/imagor:latest volumes: - ./googlesecret:/etc/secrets/google environment: PORT: 8000 IMAGOR_SECRET: mysecret # URL签名的密钥 GOOGLE_APPLICATION_CREDENTIALS: /etc/secrets/google/appcredentials.json # Google Cloud密钥文件 GCLOUD_LOADER_BUCKET: mybucket # 通过指定存储桶启用加载器 GCLOUD_LOADER_BASE_DIR: images # 可选 GCLOUD_STORAGE_BUCKET: mybucket # 通过指定存储桶启用存储 GCLOUD_STORAGE_BASE_DIR: images # 可选 GCLOUD_STORAGE_ACL: publicRead # 可选 - 参见 https://cloud.google.com/storage/docs/json_api/v1/objects/insert GCLOUD_RESULT_STORAGE_BUCKET: mybucket # 通过指定存储桶启用结果存储 GCLOUD_RESULT_STORAGE_BASE_DIR: images/result # 可选 GCLOUD_RESULT_STORAGE_ACL: publicRead # 可选 ports: - "8000:8000"
存储
和结果存储
路径风格可以在加载和保存图像时为存储路径启用额外的哈希规则:
IMAGOR_STORAGE_PATH_STYLE=digest
foobar.jpg
变为 e6/86/1a810ff186b4f747ef85f7c53946f0e6d8cb
IMAGOR_RESULT_STORAGE_PATH_STYLE=digest
fit-in/16x17/foobar.jpg
变为 61/4c/9ba1725e8cdd8263a4ad437c56b35f33deba
IMAGOR_RESULT_STORAGE_PATH_STYLE=suffix
166x169/top/foobar.jpg
变为 foobar.45d8ebb31bd4ed80c26e.jpg
17x19/smart/example.com/foobar
变为 example.com/foobar.ddd349e092cda6d9c729
IMAGOR_RESULT_STORAGE_PATH_STYLE=size
166x169/top/foobar.jpg
变为 foobar.45d8ebb31bd4ed80c26e_166x169.jpg
17x19/smart/example.com/foobar
变为 example.com/foobar.ddd349e092cda6d9c729_17x19
在生产环境中,强烈建议关闭IMAGOR_UNSAFE
并使用IMAGOR_SECRET
设置URL签名,以防止滥用多个图像操作的DDoS攻击。
URL签名哈希基于SHA摘要,通过使用密钥对URL路径(不包括/unsafe/
)进行处理创建。然后将哈希进行Base64 URL编码。
Node.js示例:
const crypto = require('crypto'); function sign(path, secret) { const hash = crypto.createHmac('sha1', secret) .update(path) .digest('base64') .replace(/\+/g, '-').replace(/\//g, '_') return hash + '/' + path } console.log(sign('500x500/top/raw.githubusercontent.com/cshum/imagor/master/testdata/gopher.png', 'mysecret')) // cST4Ko5_FqwT3BDn-Wf4gO3RFSk=/500x500/top/raw.githubusercontent.com/cshum/imagor/master/testdata/gopher.png
imagor默认使用SHA1 HMAC签名器, 与thumbor使用的相同。然而,SHA1不被认为是加密安全的。如果这是一个问题,可以配置不同的签名方法和截断长度。imagor支持sha1
、sha256
、sha512
签名器类型:
IMAGOR_SIGNER_TYPE=sha256 IMAGOR_SIGNER_TRUNCATE=40
Node.js示例则变为:
const crypto = require('crypto'); function sign(path, secret) { const hash = crypto.createHmac('sha256', secret) .update(path) .digest('base64') .slice(0, 40) .replace(/\+/g, '-').replace(/\//g, '_') return hash + '/' + path } console.log(sign('500x500/top/raw.githubusercontent.com/cshum/imagor/master/testdata/gopher.png', 'mysecret')) // IGEn3TxngivD0jy4uuiZim2bdUCvhcnVi1Nm0xGy/500x500/top/raw.githubusercontent.com/cshum/imagor/master/testdata/gopher.png
imagor在实际处理之前会检查图像类型及其分辨率。如果图像尺寸过大,处理将被拒绝,这可以防止所谓的"图像炸弹"。您可以使用VIPS_MAX_RESOLUTION
、VIPS_MAX_WIDTH
、VIPS_MAX_HEIGHT
设置允许的最大图像分辨率和尺寸:
VIPS_MAX_RESOLUTION=16800000 VIPS_MAX_WIDTH=5000 VIPS_MAX_HEIGHT=5000
使用HTTP_LOADER_ALLOWED_SOURCES
或HTTP_LOADER_ALLOWED_SOURCE_REGEXP
将特定主机列入白名单,以限制仅从允许的源加载图像。
HTTP_LOADER_ALLOWED_SOURCES
接受带有glob模式的csv,例如:
HTTP_LOADER_ALLOWED_SOURCES=*.foobar.com,my.foobar.com,mybucket.s3.amazonaws.com
HTTP_LOADER_ALLOWED_SOURCE_REGEXP
接受匹配完整URL的正则表达式,例如:
HTTP_LOADER_ALLOWED_SOURCE_REGEXP='^https://raw\.githubusercontent\.com/cshum/imagor/.*'
或者,可以为严格从一 个HTTP源加载图像设置基础URL。这也会从图像端点中删除基础URL:
示例URL:
http://localhost:8000/unsafe/fit-in/200x150/filters:fill(yellow):watermark(raw.githubusercontent.com/cshum/imagor/master/testdata/gopher-front.png,repeat,bottom,0,40,40)/raw.githubusercontent.com/cshum/imagor/master/testdata/dancing-banana.gif
使用HTTP加载器基础URL配置:
HTTP_LOADER_BASE_URL=https://raw.githubusercontent.com/cshum/imagor/master
示例URL则变为:
http://localhost:8000/unsafe/fit-in/200x150/filters:fill(yellow):watermark(testdata/gopher-front.png,repeat,bottom,0,40,40)/testdata/dancing-banana.gif
imagor提供元数据端点,用于提取图像格式、分辨率和Exif元数据等信息。 在底层,它尝试仅检索足够提取头部的数据,而不会在内存中读取和处理整个图像。
要使用元数据端点,请在URL签名哈希后、图像操作之前添加/meta
。示例:
http://localhost:8000/unsafe/meta/fit-in/50x50/raw.githubusercontent.com/cshum/imagor/master/testdata/Canon_40D.jpg
{ "format": "jpeg", "content_type": "image/jpeg", "width": 50, "height": 34, "orientation": 1, "pages": 1, "bands": 3, "exif": { "ApertureValue": "368640/65536", "ColorSpace": 1, "ComponentsConfiguration": "Y Cb Cr -", "Compression": 6, "DateTime": "2008:07:31 10:38:11", "ISOSpeedRatings": 100, "Make": "Canon", "MeteringMode": 5, "Model": "Canon EOS 40D", //... } }
在现有端点前添加/params
会以JSON形式返回端点属性,这对预览端点参数很有用。示例:
curl 'http://localhost:8000/params/g5bMqZvxaQK65qFPaP1qlJOTuLM=/fit-in/500x400/0x20/filters:fill(white)/raw.githubusercontent.com/cshum/imagor/master/testdata/gopher.png'
imagor是一个以速度、安全性和可扩展性为目标构建的Go库。 它通过一系列Go包组成的模块化架构,实现了高级图像处理:
imagor.Processor
接口imagor.Loader
接口imagor.Storage
接口imagor.Storage
接口imagor.Storage
接口安装libvips并启用CGO:
brew install vips
CGO_CFLAGS_ALLOW=-Xpreprocessor
以编译Go请参考以下示例和examples文件夹,了解使用imagor的各种方法:
package main import ( "context" "github.com/cshum/imagor" "github.com/cshum/imagor/imagorpath" "github.com/cshum/imagor/loader/httploader" "github.com/cshum/imagor/vips" "io" "os" ) func main() { app := imagor.New( imagor.WithLoaders(httploader.New()), imagor.WithProcessors(vips.NewProcessor()), ) ctx := context.Background() if err := app.Startup(ctx); err != nil { panic(err) } defer app.Shutdown(ctx) blob, err := app.Serve(ctx, imagorpath.Params{ Image: "https://yellow-cdn.veclightyear.com/ab5030c0/d00cfff8-87e8-4cfd-b18b-b3d15adb24cf.png", Width: 500, Height: 500, Smart: true, Filters: []imagorpath.Filter{ {"fill", "white"}, {"format", "jpg"}, }, }) if err != nil { panic(err) } reader, _, err := blob.NewReader() if err != nil { panic(err) } defer reader.Close() file, err := os.Create("gopher.jpg") if err != nil { panic(err) } defer file.Close() if _, err := io.Copy(file, reader); err != nil { panic(err) } }
imagor支持命令行参数和环境变量,环境变量采用大写蛇形命名法,等同于相应的参数。使用imagor -h
可查看所有可用选项。
例如,-imagor-secret
对应的环境变量为IMAGOR_SECRET
:
# 以下两种方式等效 imagor -debug -imagor-secret 1234 DEBUG=1 IMAGOR_SECRET=1234 imagor
配置也可以在.env
环境变量文件中指定,并通过-config
标志引用:
imagor -config path/to/config.env
config.env:
PORT=8000 IMAGOR_SECRET=mysecret DEBUG=1
imagor -h
使用方法:
-debug
调试模式
-port int
服务器端口 (默认 8000)
-version
显示imagor版本
-config string
从指定文件中获取配置 (默认 ".env")
-imagor-secret string
用于签名imagor URL的密钥
-imagor-unsafe
不安全的imagor模式,不需要URL签名。容易受到URL篡改
-imagor-auto-webp
如果浏览器支持,自动输出WebP格式
-imagor-auto-avif
如果浏览器支持,自动输出AVIF格式(实验性)
-imagor-base-params string
应用于所有结果图像的imagor端点基本参数,例如 filters:watermark(example.jpg)
-imagor-signer-type string
imagor URL签名哈希类型: sha1, sha256, sha512 (默认 "sha1")
-imagor-signer-truncate int
imagor URL签名截断长度
-imagor-result-storage-path-style string
imagor结果存储路径样式: original, digest, suffix (默认 "original")
-imagor-storage-path-style string
imagor存储路径样式: original, digest (默认 "original")
-imagor-cache-header-ttl duration
成功图像响应的imagor HTTP缓存头部TTL (默认 168h0m0s)
-imagor-cache-header-swr duration
成功图像响应的imagor HTTP Cache-Control头部stale-while-revalidate (默认 24h0m0s)
-imagor-cache-header-no-cache
成功图像响应的imagor HTTP Cache-Control头部no-cache
-imagor-request-timeout duration
执行imagor请求的超时时间 (默认 30s)
-imagor-load-timeout duration
imagor加载器请求的超时时间,应小于imagor-request-timeout
-imagor-save-timeout duration
将图像保存到imagor存储的超时时间
-imagor-process-timeout duration
图像处理的超时时间
-imagor-process-concurrency int
同时执行的图像处理最大数量。超过此限制的请求将被放入队列。设置-1表示无限制 (默认 -1)
-imagor-process-queue-size int
可以放入队列的图像处理最大数量。超过此限制的请求将被以HTTP状态429拒绝
-imagor-base-path-redirect string
imagor /基本路径的重定向URL,例如 https://www.google.com
-imagor-modified-time-check
检查结果图像的修改时间与源图像对比。这可以消除过时的结果,但需要更多的查询
-imagor-disable-params-endpoint
禁用imagor /params端点
-imagor-disable-error-body
禁用错误时的响应主体
-server-address string
服务器地址
-server-cors
启用CORS
-server-strip-query-string
启用去除查询字符串的重定向
-server-path-prefix string
服务器路径前缀
-server-access-log
启用服务器访问日志
-prometheus-bind string
指定地址和端口以启用Prometheus指标,例如 :5000, prom:7000
-prometheus-path string
Prometheus指标路径 (默认 "/")
-http-loader-allowed-sources string
如果设置,HTTP加载器允许从这些主机加载图像的白名单。接受带有glob模式的csv,例如 *.google.com,*.github.com
-http-loader-base-url string
HTTP加载器基础URL,预置到现有图像路径前。这会覆盖默认的scheme选项
-http-loader-forward-headers string
通过csv转发请求头到HTTP加载器请求,例如 User-Agent,Accept
-http-loader-override-response-headers string
通过csv覆盖HTTP加载器响应头到图像响应,例如 Cache-Control,Expires
-http-loader-forward-client-headers
将浏览器客户端请求头转发到HTTP加载器请求
-http-loader-insecure-skip-verify-transport
HTTP加载器使用InsecureSkipVerify为true的HTTP传输
-http-loader-max-allowed-size int
如果设置,HTTP加载器加载图像的最大允许大小(字节)
-http-loader-proxy-urls string
HTTP加载器代理URL。仅当存在此值时启用HTTP加载器代理。接受代理url的csv,例如 http://user:pass@host:port,http://user:pass@host:port
-http-loader-allowed-source-regexp string
如果设置,HTTP加载器允许从这些主机加载图像的正则表达式。与允许的主机glob模式源组合为OR关系
-http-loader-proxy-allowed-sources string
如果设置了代理URL,HTTP加载器代理允许的主机启用代理传输。接受带有glob模式的csv,例如 *.google.com,*.github.com
-http-loader-default-scheme string
如果图像路径未指定,HTTP加载器的默认scheme。设置"nil"以禁用默认scheme (默认 "https")
-http-loader-accept string
HTTP加载器设置请求Accept头部并验证响应Content-Type头部 (默认 "*/*")
-http-loader-block-link-local-networks
HTTP加载器拒绝连接到链接本地网络IP地址
-http-loader-block-loopback-networks
HTTP加载器拒绝连接到回环网络IP地址
-http-loader-block-private-networks
HTTP加载器拒绝连接到私有网络IP地址
-http-loader-block-networks string
HTTP加载器拒绝连接到指定网络IP地址。此选项接受以CIDR表示法的网络列表,用逗号分隔,例如 ::1/128,127.0.0.0/8
-http-loader-disable
禁用HTTP加载器
-file-safe-chars string 要从图像键转义中排除的文件安全字符。设置为 -- 表示无操作 -file-loader-base-dir string 文件加载器的基础目录。仅当存在此值时才启用文件加载器 -file-loader-path-prefix string 文件加载器的基础路径前缀 -file-result-storage-base-dir string 文件结果存储的基础目录。仅当存在此值时才启用文件结果存储 -file-result-storage-mkdir-permission string 文件结果存储创建目录的权限(默认为"0755") -file-result-storage-path-prefix string 文件结果存储的基础路径前缀 -file-result-storage-write-permission string 文件存储写入权限(默认为"0666") -file-result-storage-expiration duration 文件结果存储的过期时间,例如24h。默认不过期 -file-storage-base-dir string 文件存储的基础目录。仅当存在此值时才启用文件存储 -file-storage-path-prefix string 文件存储的基础路径前缀 -file-storage-mkdir-permission string 文件存储创建目录的权限(默认为"0755") -file-storage-write-permission string 文件存储写入权限(默认为"0666") -file-storage-expiration duration 文件存储的过期时间,例如24h。默认不过期
-aws-access-key-id string AWS访问密钥ID。如果使用S3加载器或S3存储则必需 -aws-region string AWS区域。如果使用S3加载器或S3存储则必需 -aws-secret-access-key string AWS秘密访问密钥。如果使用S3加载器或S3存储则必需 -aws-session-token string AWS会话令牌。可选的临时凭证令牌 -s3-endpoint string 可选的S3端点,用于覆盖默认值 -s3-safe-chars string 要从S3图像键转义中排除的安全字符。设置为 -- 表示无操作 -s3-force-path-style 强制S3请求使用路径样式寻址s3.amazonaws.com/bucket/key,而不是bucket.s3.amazonaws.com/key -s3-loader-bucket string S3加载器的S3存储桶。仅当存在此值时才启用S3加载器 -s3-loader-base-dir string S3加载器的基础目录 -s3-loader-path-prefix string S3加载器的基础路径前缀 -s3-result-storage-bucket string S3结果存储的S3存储桶。仅当存在此值时才启用S3结果存储 -s3-result-storage-base-dir string S3结果存储的基础目录 -s3-result-storage-path-prefix string S3结果存储的基础路径前缀 -s3-result-storage-acl string S3结果存储的上传ACL(默认为"public-read") -s3-result-storage-expiration duration S3结果存储的过期时间,例如24h。默认不过期 -s3-storage-bucket string S3存储的S3存储桶。仅当存在此值时才启用S3存储 -s3-storage-base-dir string S3存储的基础目录 -s3-storage-path-prefix string S3存储的基础路径前缀 -s3-storage-acl string S3存储的上传ACL(默认为"public-read") -s3-storage-expiration duration S3存储的过期时间,例如24h。默认不过期
-aws-loader-access-key-id string S3加载器的AWS访问密钥ID,用于覆盖全局配置 -aws-loader-region string S3加载器的AWS区域,用于覆盖全局配置 -aws-loader-secret-access-key string S3加载器的AWS秘密访问密钥,用于覆盖全局配置 -aws-loader-session-token string S3加载器的AWS会话令牌,用于覆盖全局配置 -s3-loader-endpoint string 可选的S3加载器端点,用于覆盖默认值 -aws-storage-access-key-id string S3存储的AWS访问密钥ID,用于覆盖全局配置 -aws-storage-region string S3存储的AWS区域,用于覆盖全局配置 -aws-storage-secret-access-key string S3存储的AWS秘密访问密钥,用于覆盖全局配置 -aws-storage-session-token string S3存储的AWS会话令牌,用于覆盖全局配置 -s3-storage-endpoint string 可选的S3存储端点,用于覆盖默认值 -aws-result-storage-access-key-id string S3结果存储的AWS访问密钥ID,用于覆盖全局配置 -aws-result-storage-region string S3结果存储的AWS区域,用于覆盖全局配置 -aws-result-storage-secret-access-key string S3结果存储的AWS秘密访问密钥,用于覆盖全局配置 -aws-result-storage-session-token string S3结果存储的AWS会话令牌,用于覆盖全局配置 -s3-result-storage-endpoint string 可选的S3存储端点,用于覆盖默认值
-gcloud-safe-chars string 要从谷歌云图像键转义中排除的安全字符。设置为 -- 表示无操作 -gcloud-loader-base-dir string 谷歌云加载器的基础目录 -gcloud-loader-bucket string 谷歌云存储加载器的存储桶名称。仅当存在此值时才启用谷歌云加载器 -gcloud-loader-path-prefix string 谷歌云加载器的基础路径前缀 -gcloud-result-storage-acl string 谷歌云结果存储的上传ACL -gcloud-result-storage-base-dir string 谷歌云结果存储的基础目录 -gcloud-result-storage-bucket string 谷歌云结果存储的存储桶名称。仅当存在此值时才启用谷歌云结果存储 -gcloud-result-storage-expiration duration 谷歌云结果存储的过期时间,例如24h。默认不过期 -gcloud-result-storage-path-prefix string 谷歌云结果存储的基础路径前缀 -gcloud-storage-acl string 谷歌云存储的上传ACL -gcloud-storage-base-dir string 谷歌云的基础目录 -gcloud-storage-bucket string 谷歌云存储的存储桶名称。仅当存在此值时才启用谷歌云存储 -gcloud-storage-expiration duration 谷歌云存储的过期时间,例如24h。默认不过期 -gcloud-storage-path-prefix string 谷歌云存储的基础路径前缀
-vips-max-animation-frames int VIPS要加载的最大动画帧数。设置为1禁用动画,-1表示无限制 -vips-disable-blur VIPS禁用vips处理器的模糊操作 -vips-disable-filters string VIPS通过CSV禁用滤镜,例如blur,watermark,rgb -vips-max-filter-ops int VIPS允许的最大滤镜操作数。设置为-1表示无限制(默认为-1) -vips-max-width int VIPS最大图像宽度 -vips-max-height int VIPS最大图像高度 -vips-max-resolution int VIPS最大图像分辨率 -vips-mozjpeg VIPS启用MozJPEG的最大压缩。需要安装mozjpeg -vips-avif-speed int VIPS avif速度,最低为0,最快为9(默认为5)。
AI小说写作助手,一站式润色、改写、扩写
蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。
字节跳动发布的AI编程神器IDE
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
全能AI智能助手,随时解答生活与工作的多样问题
问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。
实时语音翻译/同声传译工具
Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。
AI助力,做PPT更简单!
咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。
选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。
专业的AI公文写作平台,公文写作神器
AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。