Skip to content

@lilith lilith released this May 11, 2020

In order to remove our dependency on OpenSSL and make binary distributions work across all platforms, we've decided to drop URL support from JSON jobs. imageflow_tool and libimageflow v1/build will no longer understand the url JSON object.

This will dramatically reduce our security footprint and ensure that libimageflow can be statically linked for use by Node and Go runtimes.

It will also substantially decrease the size of libimageflow binaries.

We've also ensured that liblcms2, libpng, and zlib are statically linked in all cases.

We've also removed several unneeded dependencies to lower the binary and security footprint.

Assets 9

@lilith lilith released this May 10, 2020


Note that these are not breaking changes yet, but v0.1 endpoints are now deprecated and will be removed at a later date.

Commands have changed

  • v0.1/build is now v1/build.
  • v0.1/ir4 is now v1/querystring


Message endpoints are now

  • v0.1/build -> v1/build
  • v0.1/execute -> v1/execute
  • v0.1/get_image_info -> v1/get_image_info
  • v0.1/tell_decoder -> v1/tell_decoder
Assets 8

@lilith lilith released this May 5, 2020

JSON API Changes

  • BREAKING JSON CHANGE: pngquant encoder preset now has separate fields for quality and minimum_quality instead of expecting a 2-element array for the quality field.

Querystring API Changes

  • BREAKING: Change &webp.quality default to 80
  • Fix transposed &anchor= command in querystring API. topright was acting like bottomleft, etc.
  • Add &png.lossless=true command to offer explicit control in the presence of png.quality (non-breaking change)

Other changes

  • Add internal-only enable_transparency node to enable the transparency channel on a jpeg image. Used by Alpha node and expand_canvas so that transparency now works even if
  • Add docs for all nodes
  • Update dependencies
Assets 9

@lilith lilith released this May 3, 2020

Querystring API Changes

  • Add jpeg.quality alias for quality - make quality parameters consistent.
  • Fix bug when specifying jpeg and webp qualities under 0 or over 100
  • Add dpr alias for zoom, which acts as a multiplier for width/height
  • Add down.filter and up.filter querystring commands for controlling the filter used when down-sampling and up-sampling respectively.

JSON API Changes (breaking)

  • Re-sampling filters are now snake_case instead of CamelCase.
  • Add Watermark node type. See for details

Rust API changes

  • Don't panic if get_output_buffer_slice is called on an input


  • Use nuget RID win-x64 and osx-64 instead. Update package authors


  • Create
  • Document Querystring API at
  • Add pngsize benchmark to imazen/imageflow_bench_ubuntu20
Assets 9

@lilith lilith released this Apr 28, 2020

  • Add maximum_deflate: true/false parameter to libpng and lodepng encoders in JSON. This uses a lot more CPU to make PNG files a couple percent smaller (cranks zlib compression up to 9).
  • Add corresponding png.max_deflate=true/false querystring command.
  • Fix encoder libpng { zlib_compression } JSON parameter so it works
Assets 9

@lilith lilith released this Apr 26, 2020

Four new querystring commands

  • Add png.quality=0..100 which triggers quantization/lossy PNG compression.
  • Add png.min_quality=0..100 which determines when to fallback to lossless PNG.
  • Add png.quantization_speed=1..11 (default 4) to determine how much time to spend compressing
  • Add png.libpng=true to switch back to libpng encoder (which produces larger files)
Assets 9

@lilith lilith released this Apr 22, 2020

Querystring commands now use the Mozjpeg encoder by default and produce smaller files at the expense of more CPU time. The &jpeg.turbo=true command can be used to restore the original behavior.

Assets 9
Apr 22, 2020
Update benchmarks to include jpeg quality/size comparison
You can’t perform that action at this time.