# Changelog ## [Unreleased] ### Added - `IMGPROXY_FALLBACK_IMAGE_HTTP_CODE` config. - [expires](https://docs.imgproxy.net/generating_the_url?id=expires) processing option. - [skip processing](https://docs.imgproxy.net/generating_the_url?id=skip-processing) processing option. - [Datadog](./docs/datadog.md) metrics. - `force` and `fill-down` resizing types. - [min-width](https://docs.imgproxy.net/generating_the_url?id=min-width) and [min-height](https://docs.imgproxy.net/generating_the_url?id=min-height) processing options. ### Removed - Removed basic URL format, use [advanced one](./docs/generating_the_url.md) instead. - Removed `IMGPROXY_MAX_SRC_DIMENSION` config, use `IMGPROXY_MAX_SRC_RESOLUTION` instead. - Removed `IMGPROXY_GZIP_COMPRESSION` config. - Removed `IMGPROXY_MAX_GIF_FRAMES` config, use `IMGPROXY_MAX_ANIMATION_FRAMES` instead. - Removed `crop` resizing type, use [crop](./docs/generating_the_url.md#crop) processing option instead. - Dropped old libvips (<8.8) support. ## [2.17.0] - 2021-09-07 ### Added - Wildcard support in `IMGPROXY_ALLOWED_SOURCES`. ### Change - If the source URL contains the `IMGPROXY_BASE_URL` prefix, it won't be added. ### Fix - (pro) Fix path prefix support in the `/info` handler. ### Deprecated - The [basic URL format](https://docs.imgproxy.net/generating_the_url_basic) is deprecated and can be removed in future versions. Use [advanced URL format](https://docs.imgproxy.net/generating_the_url_advanced) instead. ## [2.16.7] - 2021-07-20 ### Change - Reset DPI while stripping meta. ## [2.16.6] - 2021-07-08 ### Fix - Fix performance regression in ICC profile handling. - Fix crashes while processing CMYK images without ICC profile. ## [2.16.5] - 2021-06-28 ### Change - More clear downloading errors. ### Fix - Fix ICC profile handling in some cases. - Fix handling of negative height value for BMP. ## [2.16.4] - 2021-06-16 ### Change - Use magenta (ff00ff) as a transparency key in `trim`. ### Fix - Fix crashes while processing some SVGs (dockerized version). - (pro) Fix parsing HEIF/AVIF meta. ## [2.16.3] - 2021-04-05 ### Fix - Fix PNG quantization palette size. - Fix parsing HEIF meta. - Fix debig header. ## [2.16.2] - 2021-03-04 ### Change - Updated dependencies in Docker. ## [2.16.1] - 2021-03-02 ### Fix - Fix delays and loop numbers of animated images. - Fix scale-on-load of huge SVGs. - (pro) Fix loading of PDFs with transparent background. ## [2.16.0] - 2021-02-08 ### Added - AVIF support. - Azure Blob Storage support. - `IMGPROXY_STRIP_COLOR_PROFILE` config and [strip_color_profile](https://docs.imgproxy.net/generating_the_url?id=strip-color-profile) processing option. - `IMGPROXY_FORMAT_QUALITY` config. - `IMGPROXY_AUTO_ROTATE` config and [auto_rotate](https://docs.imgproxy.net/generating_the_url?id=auto-rotate) processing option. - [rotate](https://docs.imgproxy.net/generating_the_url?id=rotate) processing option. - `width` and `height` arguments of the [crop](https://docs.imgproxy.net/generating_the_url?id=crop) processing option can be less than `1` that is treated by imgproxy as a relative value (a.k.a. crop by percentage). - (pro) Remove Adobe Illustrator garbage from SVGs. - (pro) Add IPTC tags to the `/info` response. ### Changed - Disable scale-on-load for animated images since it causes many problems. Currently, only animated WebP is affected. - Improved ICC profiles handling. - (pro) Improved and optimized video thumbnails generation. ### Fix - Fix `dpr` option. - Fix non-strict SVG detection. - Fix non-UTF8 SVG detection. - Fix checking of connections in queue. - (pro) Fix video thumbnail orientation. - (pro) Fix EXIF fields titles in the `/info` response. ## [2.15.0] - 2020-09-03 ### Added - Ability to skip processing of some formats. See [Skip processing](https://docs.imgproxy.net/configuration?id=skip-processing). - (pro) PDF support. - (pro) [video_thumbnail_second](https://docs.imgproxy.net/generating_the_url?id=video-thumbnail-second) processing option. - (pro) [page](https://docs.imgproxy.net/generating_the_url?id=page) processing option. - (pro) [background_alpha](https://docs.imgproxy.net/generating_the_url?id=background-alpha) processing option. - (pro) `IMGPROXY_VIDEO_THUMBNAIL_PROBE_SIZE` and `IMGPROXY_VIDEO_THUMBNAIL_MAX_ANALYZE_DURATION` configs. ### Changed - Speed up generation of video thumbnails with large timestamps. ### Fix - Fix `padding` and `extend` behaior when converting from a fromat without alpha support to one with alpha support. - Fix WebP dimension limit handling. - (pro) Fix thumbnails generation of some videos. ## [2.14.1] - 2020-07-22 ### Fix - Fix ICO saving. ## [2.14.0] - 2020-07-17 ### Added - `IMGPROXY_PROMETHEUS_NAMESPACE` config. - [strip_metadata](https://docs.imgproxy.net/generating_the_url?id=strip-metadata) processing option. - (pro) Configurable unsharpening. See [Unsharpening](https://docs.imgproxy.net/configuration?id=unsharpening) configs and [unsharpening](https://docs.imgproxy.net/generating_the_url?id=unsharpening) processing option. ### Changed - Better for libvips memory metrics for Prometheus. - Docker image includes the latest versions of dependencies. - Optimize processing of animated images. ### Fix - Fix error when requested WebP dimension exceeds the WebP dimension limit. - Fix path parsing in some rare cases. - Fix HEIC/HEIF header parsing bug. ### Deprecated - (pro) `IMGPROXY_APPLY_UNSHARPEN_MASKING` config is deprecated, use `IMGPROXY_UNSHARPENING_MODE` instead. ## [2.13.1] - 2020-05-06 ### Fixed - Fix and optimize processing of animated images. ## [2.13.0] - 2020-04-22 ### Added - Fallback images. - [padding](https://docs.imgproxy.net/generating_the_url?id=padding) processing option. ### Changed - Optimized memory usage. Especially when dealing with animated images. ### Fixed - Fix crashes during animated images processing. ## [2.12.0] - 2020-04-07 ### Addded - `IMGPROXY_PATH_PREFIX` config. - (pro) Video thumbnails. - (pro) [Getting the image info](https://docs.imgproxy.net/getting_the_image_info). ### Changed - Improved `trim` processing option. - Quantizr updated to 0.2.0 in Docker image. ## [2.11.0] - 2020-03-12 ### Changed - Replaced imagequant with [Quantizr](https://github.com/DarthSim/quantizr) in docker image. - Removed HEIC saving support. - Removed JBIG compressin support in TIFF. ## [2.10.1] - 2020-02-27 ### Changed - `imgproxy -v` is replaced with `imgproxy version`. ### Fixed - Fix loadind BMP stored in ICO. - Fix ambiguous HEIC magic bytes (MP4 videos has been detected as HEIC). - Fix build with libvips < 8.6. - Fix build with Go 1.14. - Fix go module naming. Use `github.com/imgproxy/imgproxy/v2` to build imgproxy from source. ## [2.10.0] - 2020-02-13 ### Added - `IMGPROXY_NETWORK` config. Allows to bind on Unix socket. - `IMGPROXY_CACHE_CONTROL_PASSTHROUGH` config. - `imgproxy health` command. - (pro) `IMGPROXY_GIF_OPTIMIZE_FRAMES` & `IMGPROXY_GIF_OPTIMIZE_TRANSPARENCY` configs and `gif_options` processing option. - (pro) `IMGPROXY_CUSTOM_REQUEST_HEADERS`, `IMGPROXY_CUSTOM_RESPONSE_HEADERS`, and `IMGPROXY_CUSTOM_HEADERS_SEPARATOR` configs. ### Changed - Better SVG detection. ### Fixed - Fix detection of SVG starting with a comment. ## [2.9.0] - 2020-01-30 ### Added - `trim` processing option. - `IMGPROXY_STRIP_METADATA` config. ### Fixed - Fixed focus point crop calculation. ## [2.8.2] - 2020-01-13 ### Changed - Optimized memory usage. ### Fixed - Fixed `IMGPROXY_ALLOWED_SOURCES` config. ## [2.8.1] - 2019-12-27 ### Fixed - Fix watermark top offset calculation. ## [2.8.0] - 2019-12-25 ### Added - `IMGPROXY_LOG_LEVEL` config. - `max_bytes` processing option. - `IMGPROXY_ALLOWED_SOURCES` config. ### Changed - Docker image base is changed to Debian 10 for better stability and performance. - `extend` option now supports gravity. ## [2.7.0] - 2019-11-13 ### Changed - Boolean processing options such as `enlarge` and `extend` are properly parsed. `1`, `t`, `TRUE`, `true`, `True` are truthy, `0`, `f`, `F`, `FALSE`, `false`, `False` are falsy. All other values are treated as falsy and generate a warning message. ### Fixed - Fix segfaults on watermarking in some cases ## [2.6.2] - 2019-11-11 ### Fixed - Fix `format` option in presets. ## [2.6.1] - 2019-10-28 ### Fixed - Fix loading of some GIFs by using the edge version of giflib. ## [2.6.0] - 2019-10-23 ### Added - TIFF and BMP support. - `IMGPROXY_REPORT_DOWNLOADING_ERRORS` config. Setting it to `false` disables reporting of downloading errors. - SVG passthrough. When source image and requested format are SVG, image will be returned without changes. - `IMGPROXY_USE_GCS` config. When it set to true and `IMGPROXY_GCS_KEY` is not set, imgproxy tries to use Application Default Credentials to get access to GCS bucket. ### Changed - Reimplemented and more errors-tolerant image size parsing. - Log only modified processing options. ### Fixed - Fixed sharpening+watermarking. - Fixed path parsing when no options is provided and image URL is Base64 encoded. ### Deprecated - Using `IMGPROXY_GCS_KEY` without `IMGPROXY_USE_GCS` set to `true` is deprecated. ## [2.5.0] - 2019-09-19 ### Added - `structured` and `json` log formats. Can be set with `IMGPROXY_LOG_FORMAT`. ### Changed - New default log format. - Better watermarking: image transparency doesn't affect watermarks, faster watermark scaling. ## [2.4.1] - 2019-08-29 ### Changed - More verbose URL parsing errors. ## [2.4.0] - 2019-08-20 ### Added - `SO_REUSEPORT` socker option support. Can be enabled with `IMGPROXY_SO_REUSEPORT`. - [filename](./docs/generating_the_url.md#filename) option. ### Changed - Better handling if non-sRGB images. - `dpr` option always changes the resulting size even if it leads to enlarge and `enlarge` is falsey. - Log to STDOUT. - Only unexpected errors are reported to Bugsnag/Honeybadger/Sentry. - Better Sentry support. ### Deprecated - GZip compression support is deprecated. ## [2.3.0] - 2019-06-25 ### Added - `libvips` v8.8 support: better processing of animated GIFs, built-in CMYK profile, better WebP scale-on-load, etc; - Animated WebP support. `IMGPROXY_MAX_GIF_FRAMES` is deprecated, use `IMGPROXY_MAX_ANIMATION_FRAMES`; - [HEIC support](./docs/image_formats_support.md#heic-support); - [crop](./docs/generating_the_url.md#crop) processing option. `resizing_type:crop` is deprecated; - Offsets for [gravity](./docs/generating_the_url.md#gravity); - Resizing type `auto`. If both source and resulting dimensions have the same orientation (portrait or landscape), imgproxy will use `fill`. Otherwise, it will use `fit`; - Development errors mode. When `IMGPROXY_DEVELOPMENT_ERRORS_MODE` is true, imgproxy will respond with detailed error messages. Not recommended for production because some errors may contain stack trace; - `IMGPROXY_KEEP_ALIVE_TIMEOUT` config. ### Changed - Allow URL query for `/health`; - Better stack trace for image processing errors; ## [2.2.13] - 2019-05-07 ### Added - Send `X-Request-ID` header in response. ### Changed - Better shrink-on-load. - Don't import common sRGB IEC61966-2.1 ICC profile unless linear colorspace is used. - Don't fail on recursive preset usage, just ignore already used preset and log warning. ## [2.2.12] - 2019-04-11 ### Changed - Don't fail processing when embedded ICC profile is not compatible with the image. ## [2.2.11] - 2019-04-08 ### Changed - Optimized ICC import when linear colorspace usage is disabled. ## [2.2.10] - 2019-04-05 ### Added - PNG quantization. Can be enabled with `IMGPROXY_PNG_QUANTIZE`. Palette size can be specified with `IMGPROXY_PNG_QUANTIZATION_COLORS`. ### Changed - Resizing images in linear colorspace is disabled by default. Can be enabled with `IMGPROXY_USE_LINEAR_COLORSPACE`; ## [2.2.9] - 2019-04-02 ### Fixed Fixed processing of images with embedded profiles that was broken in v2.2.8. ## [2.2.8] - 2019-04-01 ### Added - Resizing in linear colorspace; - `IMGPROXY_DISABLE_SHRINK_ON_LOAD` config to disable shring-on-load of JPEG and WebP. ### Fixed - Remove orc from Docker image (causes segfaults in some cases). ## [2.2.7] - 2019-03-22 ### Changed - Memory usage optimizations. ### Fixed - Fix color management. ## [2.2.6] - 2019-02-27 ### Fixed - Fix signature check when source URL is escaped. ## [2.2.5] - 2019-02-21 ### Added - [extend](./docs/generating_the_url.md#extend) processing option. - `vips_memory_bytes`, `vips_max_memory_bytes` and `vips_allocs` metrics for Prometheus. ### Fixed - Fix SVG detection. ## [2.2.4] - 2019-02-13 ### Changed - Minor improvements. ## [2.2.3] - 2019-02-04 ### Changed - Simple filesystem transport withh less memory usage. ### Fixed - Fix critical bug with cached C strings; ## [2.2.2] - 2019-02-01 - Memory usage optimizations. ## [2.2.1] - 2019-01-21 ### Added - Source file size limit. ### Changed - More memory usage optimizations. ## [2.2.0] - 2019-01-19 ### Changed - Optimized memory usage. [Memory usage tweaks](./docs/memory_usage_tweaks.md). - `Vary` header is set when WebP detection, client hints or GZip compression are enabled. - Health check doesn't require `Authorization` header anymore. ## [2.1.5] - 2019-01-14 ### Added - [Sentry support](./docs/configuration.md#error-reporting) (thanks to [@koenpunt](https://github.com/koenpunt)). - [Syslog support](./docs/configuration.md#syslog). ### Fixed - Fix detection of some kind of WebP images; ## [2.1.4] - 2019-01-10 ### Added - SVG sources support. ### Changed - Memory usage optimizations. - Proper filename in the `Content-Disposition` header. ### Fixed - Fix support for not animated GIFs. ## [2.1.3] - 2018-12-10 ### Added - [Minio support](./docs/serving_files_from_s3.md#minio) ## [2.1.2] - 2018-12-02 ### Added - ICO support ## [2.1.1] - 2018-11-29 ### Changed - When libvips failed to save PNG, imgproxy will try to save is without embedded ICC profile. ### Fixed - Fixed EXIF orientation fetching. ## [2.1.0] - 2018-11-16 ### Added - [Plain source URLs](./docs/generating_the_url.md#plain) support. - [Serving images from Google Cloud Storage](./docs/serving_files_from_google_cloud_storage.md). - [Full support of GIFs](./docs/image_formats_support.md#gif-support) including animated ones. - [Watermarks](./docs/watermark.md). - [New Relic](./docs/new_relic.md) metrics. - [Prometheus](./docs/prometheus.md) metrics. - [DPR](./docs/generating_the_url.md#dpr) option (thanks to [selul](https://github.com/selul)). - [Cache buster](./docs/generating_the_url.md#cache-buster) option. - [Quality](./docs/generating_the_url.md#quality) option. - Support for custom [Amazon S3](./docs/serving_files_from_s3.md) endpoints. - Support for [Amazon S3](./docs/serving_files_from_s3.md) versioning. - [Client hints](./docs/configuration.md#client-hints-support) support (thanks to [selul](https://github.com/selul)). - Truncated signature support (thanks to [printercu](https://github.com/printercu)). ### Changed - imgproxy uses source image format by default for the resulting image. - Send `User-Agent` header when downloading a source image. - Proper filename in `Content-Disposition` header in the response. ### Deprecated - `IMGPROXY_MAX_SRC_DIMENSION` is **deprecated**, use `IMGPROXY_MAX_SRC_RESOLUTION` instead. ## [2.0.3] - 2018-11-02 ### Fixed - Fix URL validation when IMGPROXY_BASE_URL is used. ## [2.0.2] - 2018-10-25 ### Fixed - Fix smart crop + blur/sharpen SIGSEGV on Alpine. ## [2.0.1] - 2018-10-18 ### Fixed - Minor fixes. ## [2.0.0] - 2018-10-08 All-You-Ever-Wanted release! :tada: ### Added - [New advanced URL format](./docs/generating_the_url.md). Unleash the full power of imgproxy v2.0. - [Presets](./docs/presets.md). Shorten your urls by reusing processing options. - [Serving images from Amazon S3](./docs/serving_files_from_s3.md). Thanks to [@crohr](https://github.com/crohr), now we have a way to serve files from private S3 buckets. - [Autoconverting to WebP when supported by browser](./docs/configuration.md#webp-support-detection) (disabled by default). Use WebP as resulting format when browser supports it. - [Gaussian blur](./docs/generating_the_url.md#blur) and [sharpen](./docs/generating_the_url.md#sharpen) filters. Make your images look better than before. - [Focus point gravity](./docs/generating_the_url.md#gravity). Tell imgproxy what point will be the center of the image. - [Background color](./docs/generating_the_url.md#background). Control the color of background when converting PNG with alpha-channel to JPEG. ### Changed - Key and salt are not required anymore. When key or salt is not specified, signature checking is disabled. - Imgproxy calcs resulting width/height automaticly when one specified as zero. - Memory usage is optimized. ## [1.1.8] - 2018-10-01 ### Fixed - Disable libvips cache to prevent SIGSEGV on Alpine. ## [1.1.7] - 2018-09-06 ### Changed - Improved ETag generation. ## [1.1.6] - 2018-07-26 ### Added - Progressive JPEG and interlaced PNG support. ## [1.1.5.1] - 2018-05-25 ### Fixed - Fix autorotation when image is not resized. ## [1.1.5] - 2018-04-27 ### Added - CORS headers. - `IMGPROXY_BASE_URL` config. - `Content-Length` header. ## [1.1.4] - 2018-03-19 ### Added - Request ID in the logs. ### Changed - Idle time does not causes timeout. - Increased default maximum number of simultaneous active connections.