Minor Changes
-
020080d: Add support for bypass_cache and cache_tags options (imgproxy Pro). When
bypass_cacheis set to1,tortrue, imgproxy bypasses the internal cache and does all the processing and fetching from the source image.cache_tagsaccepts a list of strings that imgproxy adds to the cache entry and the response headers. Both options are supported in processing and image info URLs. The short formsbcandctare also supported. -
15b7801: Add support for five new options from the updated imgproxy Usage docs.
Image info options (
generateImageInfoUrl):- classify (
cl) —{classify: {top_k: 3}}or{cl: {top_k: 2, class_names: ["Bus", "Person"]}}. Whentop_kis greater than zero, imgproxy classifies the image and returns the top K classes with the highest confidence scores. Class names are optional; if given, imgproxy classifies only those classes. - thumb_hash (
th) —{thumb_hash: 1}. Returns the image's ThumbHash, a compact placeholder representation of the image. - perceptual_hash (
phash,ph) —{perceptual_hash: 1}. Returns the perceptual hash of the image, which can be used to find similar or duplicate images.
Processing options (
generateUrl):- crop_objects (
c_obj, imgproxy Pro) —{crop_objects: {scale_factor: 1.2, class_names: ["face"]}}. imgproxy detects objects of the provided classes and crops the image to fit all of them.scale_factorscales the crop area relative to the detected objects:1.0crops exactly to the objects,1.2adds 20% padding. Class names are optional; if omitted, imgproxy crops to all the detected objects. - preserve_hdr (
ph) —{preserve_hdr: 1}. When set to1,tortrue, a high bit image remains high bit; when set to0,forfalse, it is downscaled to 8 bit. Overrides theIMGPROXY_PRESERVE_HDRconfig value.
- classify (
-
4f9ad1b: Make the
Gravityunion exclusive: fields belonging to one gravity variant are now typed as forbidden (?: never) on the others, so mixing fields from different variants (such as{ type: "sm", x_offset: 0 }or{ type: "no", x: 0.5 }) is a compile-time error for TypeScript users instead of only a runtime one. Runtime behavior is unchanged. TypeScript code that previously compiled while passing such invalid combinations will now fail to compile — the same combinations have always thrown at runtime. -
183d037: Add support for progressive_blur option (imgproxy Pro). When
sigmais greater than0, imgproxy applies a progressive Gaussian blur filter that transitions from no blur at thestartposition to the specifiedsigmaat thestopposition. The option acceptssigma, an optionaldirection(down,up,right,left, or an angle in degrees), and optionalstartandstopfloats between0and1. The short formpblis also supported. -
043d0b3: Add support for video_thumbnail_keyframes option (imgproxy Pro). When set to
1,tortrue, imgproxy uses the latest keyframe before the requested second for video thumbnail generation, redefining theIMGPROXY_VIDEO_THUMBNAIL_KEYFRAMESconfig. The option is supported in processing and image info URLs. The short formvtkis also supported.
Patch Changes
-
4f9ad1b: Fix optional arguments being checked for truthiness instead of presence in
resize,size,watermark,watermark_size,trim,unsharp_masking,png_options,jpeg_options,colorize,monochromeandgravity. Falsy but invalid values (such asnullor an emptycolor) skipped validation and were silently rendered as omitted arguments, so{ watermark_size: { width: null, height: 100 } }producedwms::100instead of raising. Such values now raise an error, and explicitly provided0values are rendered instead of being dropped.colorize.colorandmonochrome.colorare now validated as hex colors, matchingtrim.colorandgradient.color.Also fix
jpeg_optionsrejectingprogressive: falsewhenoptimize_scanswas set tofalse. The cross-check now applies only whenoptimize_scansis actually enabled. -
c124469: Fix
video_thumbnail_animationgenerating URLs containing the literal stringundefinedwhenframe_widthorframe_heightwas omitted. Both arguments are required by imgproxy and by the option's type, so they are now validated likestep,delayandframes, and a missing value raises an error instead of producing a broken URL.Fix
zoomsilently ignoring azoomvalue of0. The option was dropped before validation, so no error was raised. imgproxy requires zoom factors to be greater than0, so0is now rejected forzoom,zoom_xandzoom_y. Note that this changes the error message for non-positive values from "can't be less than 0" to "can't be less or equal than 0". -
a97d0ef: Fix the
gradientoption dropping optional arguments explicitly set to0.color,direction,startandstopwere checked for truthiness, so{ gradient: { opacity: 0.5, stop: 0 } }producedgr:0.5and imgproxy fell back to the defaultstopof1.0instead of the requested0. The same applied tostart: 0and to adirectionangle of0. These values are now rendered explicitly, and invalid falsy values (such asnullor an emptycolor) are reported instead of being silently ignored.