1
0
mirror of https://github.com/imgproxy/imgproxy.git synced 2025-01-08 10:45:04 +02:00
imgproxy/docs/generating_the_url.md

717 lines
23 KiB
Markdown
Raw Normal View History

2021-03-15 13:26:38 +02:00
# Generating the URL
2018-10-04 14:59:57 +02:00
2021-03-15 13:26:38 +02:00
The URL should contain the signature, processing options, and source URL, like this:
2018-10-04 14:59:57 +02:00
```
2018-11-02 17:35:21 +02:00
/%signature/%processing_options/plain/%source_url@%extension
/%signature/%processing_options/%encoded_source_url.%extension
2018-10-04 14:59:57 +02:00
```
Check out the [example](#example) at the end of this guide.
2021-03-15 13:26:38 +02:00
## Signature
2018-10-04 14:59:57 +02:00
2018-10-08 08:23:20 +02:00
Signature protects your URL from being altered by an attacker. It is highly recommended to sign imgproxy URLs in production.
2018-10-04 14:59:57 +02:00
2019-09-18 14:04:01 +02:00
Once you set up your [URL signature](configuration.md#url-signature), check out the [Signing the URL](signing_the_url.md) guide to know how to sign your URLs. Otherwise, use any string here.
2018-10-04 14:59:57 +02:00
2021-03-15 13:26:38 +02:00
## Processing options
2018-10-04 14:59:57 +02:00
Processing options should be specified as URL parts divided by slashes (`/`). Processing option has the following format:
```
%option_name:%argument1:%argument2:...:argumentN
```
2019-09-18 14:04:01 +02:00
The list of processing options does not define imgproxy's processing pipeline. Instead, imgproxy already comes with a specific, built-in image processing pipeline for the maximum performance. Read more about it in the [About processing pipeline](about_processing_pipeline.md) guide.
2018-10-04 14:59:57 +02:00
imgproxy supports the following processing options:
2021-03-15 13:26:38 +02:00
### Resize
2018-10-04 14:59:57 +02:00
2018-10-25 21:56:08 +02:00
```
2019-02-21 17:55:20 +02:00
resize:%resizing_type:%width:%height:%enlarge:%extend
rs:%resizing_type:%width:%height:%enlarge:%extend
2018-10-25 21:56:08 +02:00
```
2018-10-04 14:59:57 +02:00
Meta-option that defines the [resizing type](#resizing-type), [width](#width), [height](#height), [enlarge](#enlarge), and [extend](#extend). All arguments are optional and can be omitted to use their default values.
2018-10-04 14:59:57 +02:00
2021-03-15 13:26:38 +02:00
### Size
2018-10-04 14:59:57 +02:00
2018-10-25 21:56:08 +02:00
```
2019-02-21 17:55:20 +02:00
size:%width:%height:%enlarge:%extend
s:%width:%height:%enlarge:%extend
2018-10-25 21:56:08 +02:00
```
2018-10-04 14:59:57 +02:00
Meta-option that defines the [width](#width), [height](#height), [enlarge](#enlarge), and [extend](#extend). All arguments are optional and can be omitted to use their default values.
2018-10-04 14:59:57 +02:00
2021-03-15 13:26:38 +02:00
### Resizing type
2018-10-04 14:59:57 +02:00
2018-10-25 21:56:08 +02:00
```
resizing_type:%resizing_type
rt:%resizing_type
```
2018-10-04 14:59:57 +02:00
Defines how imgproxy will resize the source image. Supported resizing types are:
2018-10-08 08:23:20 +02:00
* `fit`: resizes the image while keeping aspect ratio to fit given size;
2019-06-24 14:50:17 +02:00
* `fill`: resizes the image while keeping aspect ratio to fill given size and cropping projecting parts;
2021-11-09 10:44:26 +02:00
* `fill-down`: <i class='badge badge-v3'></i> same as `fill`, but if the resized image is smaller than the requested size, imgproxy will crop the result to keep the requested aspect ratio;
2021-03-29 13:13:28 +02:00
* `force`: resizes the image without keeping aspect ratio;
2019-06-24 14:50:17 +02:00
* `auto`: if both source and resulting dimensions have the same orientation (portrait or landscape), imgproxy will use `fill`. Otherwise, it will use `fit`.
2018-10-04 14:59:57 +02:00
Default: `fit`
2021-10-01 12:26:12 +02:00
### Resizing algorithm<i class='badge badge-pro'></i> :id=resizing-algorithm
2019-12-09 14:56:19 +02:00
```
resizing_algorithm:%algorithm
ra:%algorithm
```
Defines the algorithm that imgproxy will use for resizing. Supported algorithms are `nearest`, `linear`, `cubic`, `lanczos2`, and `lanczos3`.
Default: `lanczos3`
2021-03-15 13:26:38 +02:00
### Width
2018-10-04 14:59:57 +02:00
2018-10-25 21:56:08 +02:00
```
width:%width
w:%width
```
2018-10-04 14:59:57 +02:00
Defines the width of the resulting image. When set to `0`, imgproxy will calculate the resulting width using the defined height and source aspect ratio. When set to `0` and rezizing type is `force`, imgproxy will keep the original width.
2018-10-04 14:59:57 +02:00
Default: `0`
2021-03-15 13:26:38 +02:00
### Height
2018-10-04 14:59:57 +02:00
2018-10-25 21:56:08 +02:00
```
height:%height
h:%height
```
2018-10-04 14:59:57 +02:00
Defines the height of the resulting image. When set to `0`, imgproxy will calculate resulting height using the defined width and source aspect ratio. When set to `0` and rezizing type is `force`, imgproxy will keep the original height.
2018-10-04 14:59:57 +02:00
Default: `0`
2021-11-09 10:44:26 +02:00
### Min width<i class='badge badge-v3'></i> :id=min-width
```
min-width:%width
mw:%width
```
Defines the minimum width of the resulting image.
**⚠️Warning:** When both `width` and `min-width` are set, the final image will be cropped according to `width`, so use this combination with care.
Default: `0`
2021-11-09 10:44:26 +02:00
### Min height<i class='badge badge-v3'></i> :id=min-height
```
min-height:%height
mh:%height
```
Defines the minimum height of the resulting image.
**⚠️Warning:** When both `height` and `min-height` are set, the final image will be cropped according to `height`, so use this combination with care.
Default: `0`
2021-03-15 13:26:38 +02:00
### Dpr
2018-11-15 14:58:35 +02:00
```
dpr:%dpr
```
When set, imgproxy will multiply the image dimensions according to this factor for HiDPI (Retina) devices. The value must be greater than 0.
Default: `1`
2021-03-15 13:26:38 +02:00
### Enlarge
2018-10-04 14:59:57 +02:00
2018-10-25 21:56:08 +02:00
```
enlarge:%enlarge
el:%enlarge
```
2018-10-04 14:59:57 +02:00
When set to `1`, `t` or `true`, imgproxy will enlarge the image if it is smaller than the given size.
2018-10-04 14:59:57 +02:00
Default: false
2018-10-04 14:59:57 +02:00
2021-03-15 13:26:38 +02:00
### Extend
2019-02-21 17:55:20 +02:00
```
2019-12-25 12:50:02 +02:00
extend:%extend:%gravity
ex:%extend:%gravity
2019-02-21 17:55:20 +02:00
```
2019-12-25 12:50:02 +02:00
* When `extend` is set to `1`, `t` or `true`, imgproxy will extend the image if it is smaller than the given size.
* `gravity` _(optional)_ accepts the same values as [gravity](#gravity) option, except `sm`. When `gravity` is not set, imgproxy will use `ce` gravity without offsets.
2019-02-21 17:55:20 +02:00
2019-12-25 12:50:02 +02:00
Default: `false:ce:0:0`
2019-02-21 17:55:20 +02:00
2021-03-15 13:26:38 +02:00
### Gravity
2018-10-04 14:59:57 +02:00
2018-10-25 21:56:08 +02:00
```
2021-01-20 11:54:47 +02:00
gravity:%type:%x_offset:%y_offset
g:%type:%x_offset:%y_offset
2018-10-25 21:56:08 +02:00
```
2018-10-04 14:59:57 +02:00
2019-06-20 14:49:25 +02:00
When imgproxy needs to cut some parts of the image, it is guided by the gravity.
2018-10-04 14:59:57 +02:00
2021-01-20 11:54:47 +02:00
* `type` - specifies the gravity type. Available values:
2019-06-20 14:49:25 +02:00
* `no`: north (top edge);
* `so`: south (bottom edge);
* `ea`: east (right edge);
* `we`: west (left edge);
* `noea`: north-east (top-right corner);
* `nowe`: north-west (top-left corner);
* `soea`: south-east (bottom-right corner);
* `sowe`: south-west (bottom-left corner);
* `ce`: center.
* `x_offset`, `y_offset` - (optional) specify gravity offset by X and Y axes.
2018-10-04 14:59:57 +02:00
2019-06-20 14:49:25 +02:00
Default: `ce:0:0`
**Special gravities**:
2019-06-20 14:49:25 +02:00
2021-11-09 10:44:26 +02:00
* `gravity:sm`: smart gravity. `libvips` detects the most "interesting" section of the image and considers it as the center of the resulting image. Offsets are not applicable here;
* `gravity:obj:%class_name1:%class_name2:...:%class_nameN`: <i class='badge badge-pro'></i> <i class='badge badge-v3'></i> object-oriented gravity. imgproxy [detects objects](object_detection.md) of provided classes on the image and calculates the resulting image center using their positions. If class names are omited, imgproxy will use all the detected objects.
* `gravity:fp:%x:%y`: focus point gravity. `x` and `y` are floating point numbers between 0 and 1 that define the coordinates of the center of the resulting image. Treat 0 and 1 as right/left for `x` and top/bottom for `y`.
2018-10-04 14:59:57 +02:00
2021-03-15 13:26:38 +02:00
### Crop
2019-06-13 10:20:11 +02:00
```
crop:%width:%height:%gravity
c:%width:%height:%gravity
```
Defines an area of the image to be processed (crop before resize).
2021-01-18 17:14:15 +02:00
* `width` and `height` define the size of the area:
* When `width` or `height` is greater than or equal to `1`, imgproxy treats it as an absolute value.
* When `width` or `height` is less than `1`, imgproxy treats it as a relative value.
* When `width` or `height` is set to `0`, imgproxy will use the full width/height of the source image.
2019-12-25 12:50:02 +02:00
* `gravity` _(optional)_ accepts the same values as [gravity](#gravity) option. When `gravity` is not set, imgproxy will use the value of the [gravity](#gravity) option.
2019-06-13 10:20:11 +02:00
2021-03-15 13:26:38 +02:00
### Trim
2020-01-17 11:54:50 +02:00
```
2020-04-07 14:34:49 +02:00
trim:%threshold:%color:%equal_hor:%equal_ver
t:%threshold:%color:%equal_hor:%equal_ver
2020-01-17 11:54:50 +02:00
```
Removes surrounding background.
2020-04-07 14:34:49 +02:00
* `threshold` - color similarity tolerance.
* `color` - _(optional)_ hex-coded value of the color that needs to be cut off.
* `equal_hor` - _(optional)_ set to `1`, `t` or `true`, imgproxy will cut only equal parts from left and right sides. That means that if 10px of background can be cut off from left and 5px from right then 5px will be cut off from both sides. For example, it can be useful if objects on your images are centered but have non-symmetrical shadow.
* `equal_ver` - _(optional)_ acts like `equal_hor` but for top/bottom sides.
2020-01-17 11:54:50 +02:00
**⚠️Warning:** Trimming requires an image to be fully loaded into memory. This disables scale-on-load and significantly increases memory usage and processing time. Use it carefully with large images.
**📝Note:** If you know background color of your images then setting it explicitly via `color` will also save some resources because imgproxy won't detect it automatically.
**📝Note:** Use `color` value of `FF00FF` for trimming transparent background as imgproxy uses magenta as a transparency key.
**📝Note:** Trimming of animated images is not supported.
2020-01-17 11:54:50 +02:00
### Padding
2021-01-13 16:51:19 +02:00
```
padding:%top:%right:%bottom:%left
pd:%top:%right:%bottom:%left
2021-01-13 16:51:19 +02:00
```
Defines padding size in css manner. All arguments are optional but at least one dimension must be set. Padded space is filled according to [background](#background) option.
2021-01-13 16:51:19 +02:00
* `top` - top padding (and all other sides if they won't be set explicitly);
* `right` - right padding (and left if it won't be set explicitly);
* `bottom` - bottom padding;
* `left` - left padding.
2021-01-13 16:51:19 +02:00
**📝Note:** Padding is applied after all image transformations (except watermark) and enlarges generated image which means that if your resize dimensions were 100x200px and you applied `padding:10` option then you will get 120x220px image.
2021-01-13 16:51:19 +02:00
**📝Note:** Padding follows [dpr](#dpr) option so it will be scaled too if you set it.
### Auto Rotate
2018-10-30 14:20:02 +02:00
```
auto_rotate:%auto_rotate
ar:%auto_rotate
2018-10-30 14:20:02 +02:00
```
When set to `1`, `t` or `true`, imgproxy will automatically rotate images based onon the EXIF Orientation parameter (if available in the image meta data). The orientation tag will be removed from the image anyway. Normally this is controlled by the [IMGPROXY_AUTO_ROTATE](configuration.md#miscellaneous) configuration but this procesing option allows the configuration to be set for each request.
2018-10-30 14:20:02 +02:00
### Rotate
```
rotate:%angle
rot:%angle
```
Rotates the image on the specified angle. The orientation from the image metadata is applied before the rotation unless autorotation is disabled.
**📝Note:** Only 0/90/180/270/etc degrees angles are supported.
Default: 0
2021-03-15 13:26:38 +02:00
### Background
2018-10-04 14:59:57 +02:00
2018-10-25 21:56:08 +02:00
```
background:%R:%G:%B
bg:%R:%G:%B
2018-10-04 14:59:57 +02:00
2018-10-25 21:56:08 +02:00
background:%hex_color
bg:%hex_color
```
2018-10-04 14:59:57 +02:00
2018-10-08 08:23:20 +02:00
When set, imgproxy will fill the resulting image background with the specified color. `R`, `G`, and `B` are red, green and blue channel values of the background color (0-255). `hex_color` is a hex-coded value of the color. Useful when you convert an image with alpha-channel to JPEG.
2018-10-04 14:59:57 +02:00
2018-10-08 08:23:20 +02:00
With no arguments provided, disables any background manipulations.
2018-10-04 14:59:57 +02:00
Default: disabled
2021-10-01 12:26:12 +02:00
### Background alpha<i class='badge badge-pro'></i> :id=background-alpha
2020-08-10 13:38:37 +02:00
```
background_alpha:%alpha
bga:%alpha
```
Adds alpha channel to `background`. `alpha` is a positive floating point number between `0` and `1`.
Default: 1
2021-10-01 12:26:12 +02:00
### Adjust<i class='badge badge-pro'></i> :id=adjust
2019-10-14 12:02:23 +02:00
```
adjust:%brightness:%contrast:%saturation
a:%brightness:%contrast:%saturation
```
Meta-option that defines the [brightness](#brightness), [contrast](#contrast), and [saturation](#saturation). All arguments are optional and can be omitted to use their default values.
2019-10-14 12:02:23 +02:00
2021-10-01 12:26:12 +02:00
### Brightness<i class='badge badge-pro'></i> :id=brightness
2019-10-14 12:02:23 +02:00
```
brightness:%brightness
br:%brightness
```
When set, imgproxy will adjust brightness of the resulting image. `brightness` is an integer number in range from `-255` to `255`.
Default: 0
2021-10-01 12:26:12 +02:00
### Contrast<i class='badge badge-pro'></i> :id=contrast
2019-10-14 12:02:23 +02:00
```
contrast:%contrast
co:%contrast
```
When set, imgproxy will adjust contrast of the resulting image. `contrast` is a positive floating point number, where `1` keeps the contrast unchanged.
Default: 1
2021-10-01 12:26:12 +02:00
### Saturation<i class='badge badge-pro'></i> :id=saturation
2019-10-14 12:02:23 +02:00
```
saturation:%saturation
2019-10-14 12:55:58 +02:00
sa:%saturation
2019-10-14 12:02:23 +02:00
```
When set, imgproxy will adjust saturation of the resulting image. `saturation` is a positive floating point number, where `1` keeps the saturation unchanged.
Default: 1
2021-03-15 13:26:38 +02:00
### Blur
2018-10-04 14:59:57 +02:00
2018-10-25 21:56:08 +02:00
```
blur:%sigma
bl:%sigma
```
2018-10-04 14:59:57 +02:00
2018-10-08 08:23:20 +02:00
When set, imgproxy will apply the gaussian blur filter to the resulting image. `sigma` defines the size of a mask imgproxy will use.
2018-10-04 14:59:57 +02:00
Default: disabled
2021-03-15 13:26:38 +02:00
### Sharpen
2018-10-04 14:59:57 +02:00
2018-10-25 21:56:08 +02:00
```
sharpen:%sigma
sh:%sigma
```
2018-10-04 14:59:57 +02:00
2018-10-08 08:23:20 +02:00
When set, imgproxy will apply the sharpen filter to the resulting image. `sigma` the size of a mask imgproxy will use.
2018-10-04 14:59:57 +02:00
As an approximate guideline, use 0.5 sigma for 4 pixels/mm (display resolution), 1.0 for 12 pixels/mm and 1.5 for 16 pixels/mm (300 dpi == 12 pixels/mm).
Default: disabled
2021-04-27 12:23:22 +02:00
### Pixelate
2019-10-11 15:20:28 +02:00
```
pixelate:%size
pix:%size
```
When set, imgproxy will apply the pixelate filter to the resulting image. `size` is the size of a pixel.
Default: disabled
2021-10-01 12:26:12 +02:00
### Unsharpening<i class='badge badge-pro'></i> :id=unsharpening
```
unsharpening:%mode:%weight:%dividor
ush:%mode:%weight:%dividor
```
Allows redefining unsharpening options. All arguments have the same meaning as [Unsharpening](configuration.md#unsharpening) configs. All arguments are optional and can be omitted.
2021-10-01 12:26:12 +02:00
### Blur detections<i class='badge badge-pro'></i><i class='badge badge-v3'></i> :id=blur-detections
2021-09-28 18:57:46 +02:00
```
blur_detections:%sigma:%class_name1:%class_name2:...:%class_nameN
bd:%sigma:%class_name1:%class_name2:...:%class_nameN
```
imgproxy [detects objects](object_detection.md) of provided classes and blus them. If class names are omitted, imgproxy blurs all the detected objects.
`sigma` defines the size of a mask imgproxy will use.
2021-10-01 12:26:12 +02:00
### Draw detections<i class='badge badge-pro'></i><i class='badge badge-v3'></i> :id=draw-detections
2021-09-28 18:57:46 +02:00
```
draw_detections:%draw:%class_name1:%class_name2:...:%class_nameN
dd:%draw:%class_name1:%class_name2:...:%class_nameN
```
When `draw` is set to `1`, `t` or `true`, imgproxy [detects objects](object_detection.md) of provided classes and draws their bounding boxed. If class names are omitted, imgproxy draws the bounding boxes of all the detected objects.
2021-03-15 13:26:38 +02:00
### Watermark
2018-10-25 21:56:08 +02:00
```
2018-10-28 14:05:57 +02:00
watermark:%opacity:%position:%x_offset:%y_offset:%scale
wm:%opacity:%position:%x_offset:%y_offset:%scale
2018-10-25 21:56:08 +02:00
```
Puts watermark on the processed image.
2019-09-16 17:04:26 +02:00
* `opacity` - watermark opacity modifier. Final opacity is calculated like `base_opacity * opacity`.
* `position` - (optional) specifies the position of the watermark. Available values:
* `ce`: (default) center;
* `no`: north (top edge);
* `so`: south (bottom edge);
* `ea`: east (right edge);
* `we`: west (left edge);
* `noea`: north-east (top-right corner);
* `nowe`: north-west (top-left corner);
* `soea`: south-east (bottom-right corner);
* `sowe`: south-west (bottom-left corner);
* `re`: replicate watermark to fill the whole image;
2021-12-07 15:04:21 +02:00
* `x_offset`, `y_offset` - (optional) specify watermark offset by X and Y axes. For `re` position, define spacing between tiles;
2018-10-28 14:05:57 +02:00
* `scale` - (optional) floating point number that defines watermark size relative to the resulting image size. When set to `0` or omitted, watermark size won't be changed.
Default: disabled
2021-10-01 12:26:12 +02:00
### Watermark URL<i class='badge badge-pro'></i> :id=watermark-url
2019-10-11 15:20:28 +02:00
```
watermark_url:%url
wmu:%url
```
When set, imgproxy will use the image from the specified URL as a watermark. `url` is Base64-encoded URL of the custom watermark.
Default: blank
2021-12-07 14:52:00 +02:00
### Watermark text<i class='badge badge-pro'></i> :id=watermark-text
```
watermark_text:%text
wmt:%text
```
When set, imgproxy will generate image from the provided text and use it as a watermark. `text` is Base64-encoded text of the custom watermark.
By default, text color is black and font is `sans 16`. You can use [Pango markup](https://docs.gtk.org/Pango/pango_markup.html) in the `text` value to change the style.
If you want to use your custom font, you need to put it to `/usr/share/fonts` inside a contsainer.
Default: blank
2021-10-01 12:26:12 +02:00
### Style<i class='badge badge-pro'></i> :id=style
2019-10-11 15:20:28 +02:00
```
style:%style
st:%style
```
When set, imgproxy will prepend `<style>` node with provided content to the `<svg>` node of source SVG image. `%style` is url-safe Base64-encoded CSS-style.
Default: blank
### Strip Metadata
```
strip_metadata:%strip_metadata
sm:%strip_metadata
```
When set to `1`, `t` or `true`, imgproxy will strip the metadata (EXIF, IPTC, etc.) on JPEG and WebP output images. Normally this is controlled by the [IMGPROXY_STRIP_METADATA](configuration.md#miscellaneous) configuration but this procesing option allows the configuration to be set for each request.
### Strip Color Profile
```
strip_color_profile:%strip_color_profile
scp:%strip_color_profile
```
When set to `1`, `t` or `true`, imgproxy will transform the embedded color profile (ICC) to sRGB and remove it from the image. Otherwise, imgproxy will try to keep it as is. Normally this is controlled by the [IMGPROXY_STRIP_COLOR_PROFILE](configuration.md#miscellaneous) configuration but this procesing option allows the configuration to be set for each request.
### Quality
```
quality:%quality
q:%quality
```
2021-09-29 15:49:18 +02:00
Redefines quality of the resulting image, percentage. When `0`, quality is assumed based on `IMGPROXY_QUALITY` and [format_quality](#format-quality).
Default: 0.
2021-11-09 10:44:26 +02:00
### Format quality<i class='badge badge-v3'></i> :id=format-quality
2021-09-29 15:49:18 +02:00
```
format_quality:%format1:%quality1:%format2:%quality2:...:%formatN:%qualityN
fq:%format1:%quality1:%format2:%quality2:...:%formatN:%qualityN
```
Adds or redefines `IMGPROXY_FORMAT_QUALITY` values.
2021-11-09 10:44:26 +02:00
### Autoquality<i class='badge badge-pro'></i><i class='badge badge-v3'></i> :id=autoquality
2021-09-28 18:57:46 +02:00
```
autoquality:%method:%target:%min_quality:%max_quality:%allowed_error
aq:%method:%target:%min_quality:%max_quality:%allowed_error
```
Redefines autoqiality settings. All arguments have the same meaning as [Autoquality](configuration.md#autoqiality) configs. All arguments are optional and can be omitted.
**⚠️Warning:** Autoquality requires the image to be saved several times. Use it only when you prefer the resulting size and quality over the speed.
### Max Bytes
```
max_bytes:%bytes
mb:%bytes
```
When set, imgproxy automatically degrades the quality of the image until the image is under the specified amount of bytes.
**📝Note:** Applicable only to `jpg`, `webp`, `heic`, and `tiff`.
**⚠️Warning:** When `max_bytes` is set, imgproxy saves image multiple times to achieve specified image size.
Default: 0
2021-10-01 12:26:12 +02:00
### JPEG options<i class='badge badge-pro'></i> :id=jpeg-options
2019-12-09 11:44:23 +02:00
```
jpeg_options:%progressive:%no_subsample:%trellis_quant:%overshoot_deringing:%optimize_scans:%quant_table
jpgo:%progressive:%no_subsample:%trellis_quant:%overshoot_deringing:%optimize_scans:%quant_table
```
Allows redefining JPEG saving options. All arguments have the same meaning as [Advanced JPEG compression](configuration.md#advanced-jpeg-compression) configs. All arguments are optional and can be omitted.
2021-10-01 12:26:12 +02:00
### PNG options<i class='badge badge-pro'></i> :id=png-options
2019-12-09 11:44:23 +02:00
```
2021-02-01 15:18:35 +02:00
png_options:%interlaced:%quantize:%quantization_colors
pngo:%interlaced:%quantize:%quantization_colors
2019-12-09 11:44:23 +02:00
```
Allows redefining PNG saving options. All arguments have the same meaning as [Advanced PNG compression](configuration.md#advanced-png-compression) configs. All arguments are optional and can be omitted.
2021-10-01 12:26:12 +02:00
### GIF options<i class='badge badge-pro'></i> :id=gif-options
```
2021-02-01 15:18:35 +02:00
gif_options:%optimize_frames:%optimize_transparency
gifo:%optimize_frames:%optimize_transparency
```
Allows redefining GIF saving options. All arguments have the same meaning as [Advanced GIF compression](configuration.md#advanced-gif-compression) configs. All arguments are optional and can be omitted.
### Format
```
format:%extension
f:%extension
ext:%extension
```
Specifies the resulting image format. Alias for [extension](#extension) URL part.
Default: `jpg`
2021-10-01 12:26:12 +02:00
### Page<i class='badge badge-pro'></i> :id=page
```
page:%page
pg:%page
```
When source image supports pagination (PDF, TIFF) or animation (GIF, WebP), this option allows specifying the page to use. Pages numeration starts from zero.
Default: 0
2021-10-01 12:26:12 +02:00
### Video thumbnail second<i class='badge badge-pro'></i> :id=video-thumbnail-second
2020-08-07 14:35:36 +02:00
```
video_thumbnail_second:%second
vts:%second
```
Allows redefining `IMGPROXY_VIDEO_THUMBNAIL_SECOND` config.
2021-10-01 12:26:12 +02:00
### Fallback image URL<i class='badge badge-pro'></i><i class='badge badge-v3'></i> :id=fallback-image-url
2021-04-16 18:42:08 +02:00
You can use a custom fallback image specifying its URL with `fallback_image_url` processing option:
```
fallback_image_url:%url
fiu:%url
```
Where `url` is Base64-encoded URL of the custom fallback image.
Default: blank
2021-11-09 10:44:26 +02:00
### Skip processing<i class='badge badge-v3'></i> :id=skip-processing
2018-10-04 14:59:57 +02:00
2018-10-25 21:56:08 +02:00
```
skip_processing:%extension1:%extension2:...:%extensionN
skp:%extension1:%extension2:...:%extensionN
2018-10-25 21:56:08 +02:00
```
2018-10-04 14:59:57 +02:00
When set, imgproxy will skip the processing of listed formats. Also available as [IMGPROXY_SKIP_PROCESSING_FORMATS](configuration.md#skip-processing) configuration.
2018-10-04 14:59:57 +02:00
**📝Note:** Processing can be skipped only when the requested format is the same as the source format.
**📝Note:** Video thumbnail processing can't be skipped.
2018-10-04 14:59:57 +02:00
Default: empty
2021-03-15 13:26:38 +02:00
### Cache buster
2018-10-29 10:54:30 +02:00
```
cachebuster:%string
cb:%string
```
Cache buster doesn't affect image processing but it's changing allows to bypass CDN, proxy server and browser cache. Useful when you have changed some things that are not reflected in the URL like image quality settings, presets or watermark data.
It's highly recommended to prefer `cachebuster` option over URL query string because the option can be properly signed.
Default: empty
2021-11-09 10:44:26 +02:00
### Expires<i class='badge badge-v3'></i> :id=expires
```
expires:%timestamp
exp:%timestamp
```
When set, imgproxy will check provided unix timestamp and return 404 when expired.
Default: empty
2021-03-15 13:26:38 +02:00
### Filename
2019-08-13 16:57:43 +02:00
```
2019-08-21 14:24:36 +02:00
filename:%string
2019-08-13 16:57:43 +02:00
fn:%string
```
Defines a filename for `Content-Disposition` header. When not specified, imgproxy will get filename from the source url.
Default: empty
### Preset
2018-10-04 14:59:57 +02:00
2018-10-25 21:56:08 +02:00
```
preset:%preset_name1:%preset_name2:...:%preset_nameN
pr:%preset_name1:%preset_name2:...:%preset_nameN
2018-10-25 21:56:08 +02:00
```
2018-10-04 14:59:57 +02:00
Defines a list of presets to be used by imgproxy. Feel free to use as many presets in a single URL as you need.
2018-10-04 14:59:57 +02:00
Read more about presets in the [Presets](presets.md) guide.
Default: empty
2018-10-04 14:59:57 +02:00
2021-03-15 13:26:38 +02:00
## Source URL
2018-10-04 14:59:57 +02:00
2018-11-02 17:35:21 +02:00
There are two ways to specify source url:
2021-03-15 13:26:38 +02:00
### Plain
2018-11-02 17:35:21 +02:00
2018-11-02 18:33:56 +02:00
The source URL can be provided as is, prendended by `/plain/` part:
2018-11-02 17:35:21 +02:00
2018-11-02 18:33:56 +02:00
```
/plain/http://example.com/images/curiosity.jpg
```
**📝Note:** If the source URL contains query string or `@`, you need to escape it.
2018-11-02 18:33:56 +02:00
When using plain source URL, you can specify the [extension](#extension) after `@`:
```
/plain/http://example.com/images/curiosity.jpg@png
```
2018-11-02 17:35:21 +02:00
2021-03-15 13:26:38 +02:00
### Base64 encoded
2018-11-02 17:35:21 +02:00
2018-11-02 18:33:56 +02:00
The source URL can be encoded with URL-safe Base64. The encoded URL can be split with `/` for your needs:
2018-11-02 17:35:21 +02:00
2018-11-02 18:33:56 +02:00
```
/aHR0cDovL2V4YW1w/bGUuY29tL2ltYWdl/cy9jdXJpb3NpdHku/anBn
```
When using encoded source URL, you can specify the [extension](#extension) after `.`:
```
/aHR0cDovL2V4YW1w/bGUuY29tL2ltYWdl/cy9jdXJpb3NpdHku/anBn.png
```
2018-10-04 14:59:57 +02:00
2021-03-15 13:26:38 +02:00
## Extension
2018-10-04 14:59:57 +02:00
2020-09-01 15:57:44 +02:00
Extension specifies the format of the resulting image. Read about image formats support [here](image_formats_support.md).
2018-10-04 14:59:57 +02:00
2019-09-18 14:04:01 +02:00
The extension part can be omitted. In this case, imgproxy will use source image format as resulting one. If source image format is not supported as resulting, imgproxy will use `jpg`. You also can [enable WebP support detection](configuration.md#webp-support-detection) to use it as default resulting format when possible.
2018-10-04 14:59:57 +02:00
2019-09-18 14:04:01 +02:00
## Example
2018-10-04 14:59:57 +02:00
2018-10-08 08:23:20 +02:00
Signed imgproxy URL that uses `sharp` preset, resizes `http://example.com/images/curiosity.jpg` to fill `300x400` area with smart gravity without enlarging, and then converts the image to `png`:
2018-10-04 14:59:57 +02:00
```
2018-11-02 17:35:21 +02:00
http://imgproxy.example.com/AfrOrF3gWeDA6VOlDG4TzxMv39O7MXnF4CXpKUwGqRM/preset:sharp/resize:fill:300:400:0/gravity:sm/plain/http://example.com/images/curiosity.jpg@png
2018-10-04 14:59:57 +02:00
```
The same URL with shortcuts will look like this:
2018-11-02 17:35:21 +02:00
```
http://imgproxy.example.com/AfrOrF3gWeDA6VOlDG4TzxMv39O7MXnF4CXpKUwGqRM/pr:sharp/rs:fill:300:400:0/g:sm/plain/http://example.com/images/curiosity.jpg@png
```
The same URL with Base64-encoded source URL will look like this:
2018-10-04 14:59:57 +02:00
```
http://imgproxy.example.com/AfrOrF3gWeDA6VOlDG4TzxMv39O7MXnF4CXpKUwGqRM/pr:sharp/rs:fill:300:400:0/g:sm/aHR0cDovL2V4YW1w/bGUuY29tL2ltYWdl/cy9jdXJpb3NpdHku/anBn.png
```