Assets 7
  • Go 1.9 -> 1.10.3. VIPS 8.5.8 -> 8.6.5.
  • Expose Prometheus metrics and pprof debug endpoints on separate port.
  • Improve performance of resizing a WebP source image in some cases.
  • Improve quality of Photo detection heuristic, used to automatically convert photo PNGs to JPEG.
  • Add read, write, and keepalive timeouts to HTTP server.
  • Move to multi-stage Docker build, shrinking Docker image from 86 MB to 9 MB.
  • Remove support for Go < 1.8 and VIPS < 8.4.6.


85b5e2b1b12127408db6597c29bfedbe874efd33  fotomat-2.8.244-1.buster.amd64.deb
0b1c9ff67a3fbf15afcb548e1fc5ee1e6d4e2dee  fotomat-2.8.244-1.el6.x86_64.rpm
9b101c3bd582c738a99519c235769c01573d7b3d  fotomat-2.8.244-1.el7.x86_64.rpm
f820cf0376b8da5b7f26efc3745d2c36ad0e2454  fotomat-2.8.244-1.jessie.amd64.deb
b0e1a544d2915e062482f33a36603f085d00c6bf  fotomat-2.8.244-1.stretch.amd64.deb

Docker image: docker pull dienet/fotomat:v2.8

@aaron42net aaron42net released this Sep 24, 2017 · 25 commits to master since this release

Assets 6
  • Go 1.7.3 -> 1.9, VIPS 8.4.4 -> 8.5.8. Together these make Fotomat 10-20% faster in many cases.
  • Add Date to whitelisted Response headers, to expose age of entry cached
    upstream from Fotomat.


f7c0dad2a58c69ee5acdf6f52b85de2f2e61e1b9  fotomat-2.7.219-1.el6.x86_64.rpm
431feedb2da2fdacc8106c6a4319094226f86f5e  fotomat-2.7.219-1.el7.centos.x86_64.rpm
f7e857321ca07ba2a2facd1a54e4203a8300bd3e  fotomat-2.7.219-1.jessie.amd64.deb
3c72e35f8ccc3905cec6ac989be4e0b021a4817e  fotomat-2.7.219-1.stretch.amd64.deb

Docker image: docker pull dienet/fotomat:v2.7

@aaron42net aaron42net released this Nov 14, 2016 · 34 commits to master since this release

Assets 6
  • Improve test coverage.
  • Timeouts now return 504 instead of 500 with older versions of Go.
  • Fix race condition in Pool's use of sync.WaitGroup.
  • Slightly improved quality of resized images.
  • Strip metadata from PNG, reducing their size.
  • Offset resized images by a half-pixel, matching ImageMagick.
  • Add godoc documentation for every exported type and method.
  • Fully pass golint, add golint check to Travis-CI.
  • Go 1.7 -> 1.7.3, VIPS 8.3.3 -> 8.4.4.


bd766814d9b431139db075a1e174241078deb8fa  fotomat-2.6.210-1.el6.x86_64.rpm
e8d89514e8d881cbe7d6fc65c804d9b56b1fad23  fotomat-2.6.210-1.el7.centos.x86_64.rpm
5464a6c1c195d86ca20fb310a0340eed2b61fe57  fotomat-2.6.210-1.jessie.amd64.deb
d3f0dde76749982bc6361d2cced138afb80f8ddf  fotomat-2.6.210-1.stretch.amd64.deb

Docker image: docker pull dienet/fotomat:v2.6

@aaron42net aaron42net released this Aug 16, 2016 · 55 commits to master since this release

Assets 6
  • Updated documentation.
  • Work around bad /proc/cpuinfo data on Xen.
  • Add --max_queue_duration with a default of 10 seconds.
  • Switch from 408 to 504 errors on queue timeout.
  • Add headers to disable content type sniffing and enable XSS protection.
  • Go 1.6.2 -> 1.7. VIPS 8.3.1 -> 8.3.3.


1ab6605d79676faa9eae47b33fb64d299a13d51d  fotomat-2.5.189-1.el6.x86_64.rpm
670a8995fc36c4e1e3106e5269081b67c6212a89  fotomat-2.5.189-1.el7.centos.x86_64.rpm
00b15fbd4a3efcc836b967890aade271d5559102  fotomat-2.5.189-1.jessie.amd64.deb
4534f4a11c9991ccab313fd64d34316642a8d753  fotomat-2.5.189-1.stretch.amd64.deb

Docker image: docker pull dienet/fotomat:v2.5

@aaron42net aaron42net released this May 31, 2016 · 64 commits to master since this release

Assets 6
  • Add, simplifying dependency installation.
  • Add support for HTTP validators and conditional GETs, allowing 304 responses.
  • Update to Vips 8.3.1, significantly improving resizing performance.
  • Pre-shrink WebP on load, improving WebP resizing performance.
  • Replace ImageMagick with much faster Giflib for loading GIFs, removing ImageMagick as dependency.
  • Move prebuilt binaries to Go version 1.6.2, which fixed 1.6's performance regression.
  • Allow all x64_64 to use pre-built images, not just recent processors.
  • Add a default CMYK ICC profile, allowing conversion of broken CMYK images without one.
  • Change --max_image_threads default to number of physical CPU cores, improving latency.
  • Replace --always_interpolate with --fast_resize, defaulting to higher quality output.
  • Free resources faster when HTTP clients close their connection.
  • Add benchmarking tools to generate performance graphs.
  • Add travis-ci builds and reporting of code coverage to


7c58f621203a84e3b04fd87393cc516bdc92a921  fotomat-2.4.180-1.el6.x86_64.rpm
fa305b555ab534830c63ee3edc1e8835052ee272  fotomat-2.4.180-1.el7.centos.x86_64.rpm
f50ea525cdcee03c6af853c08cf11731b9f0483e  fotomat-2.4.180-1.jessie.amd64.deb
19f7edf05a635be874e331aae77841f497799972  fotomat-2.4.180-1.stretch.amd64.deb

Docker image: docker pull dienet/fotomat:v2.4

@aaron42net aaron42net released this Mar 14, 2016 · 194 commits to master since this release

Assets 2
  • Fix v1 branch so it can be built again for benchmarks.
  • Release a few minor changes to v1 branch before it was forked to v2 branch:
    • Add Content-Length and Server headers.
    • Make golint happier.

Docker image: docker pull dienet/fotomat:v1.11

@aaron42net aaron42net released this Mar 9, 2016 · 89 commits to master since this release

Assets 6
  • Faster and higher-quality conversion of color-corrected images to sRGB.
  • Moved Thumbnail to a thread pool, reducing memory used by VIPS thread-local storage.
  • Add a strict -max_prefetch limit on how many images can be waiting to be sent to the Thumbnail thread pool.
  • Fix memory leak of C strings passed to VIPS.
  • Fotomat was 20% slower with Go 1.6 due to a cgocheck regression that will be fixed with 1.6.1. Downgrade Docker builds to 1.5.3 for now.
  • Add current FotomatVersion to proxy User-Agent header.


8ce12b9a7ab4e1a608f3f98f46e5fa77cec17561  fotomat-2.3.155-1.el6.x86_64.rpm
6efae87484bacf1098cffed0a34f52275cd10dbd  fotomat-2.3.155-1.el7.centos.x86_64.rpm
036e2f94c9b4862beffc9d5f3f590ac24b5a4a87  fotomat-2.3.155-1.jessie.amd64.deb
52fdcd5682dd28fd74c0f4f22a93c0618ce862af  fotomat-2.3.155-1.stretch.amd64.deb

Docker image: docker pull dienet/fotomat:v2.3

@aaron42net aaron42net released this Mar 8, 2016 · 97 commits to master since this release

Assets 6
  • Add support to VIPS wrapper to statically link VIPS into the Fotomat binary.
  • Add --version flag to server and git pre-commit hook to auto-update version patchlevel.
  • Build Debian jessie/stretch .debs and CentOS 6/7 .rpms via Docker images.


87e10c6acae43bca50f174605758d07d75413cbc  fotomat-2.2.146-1.el6.x86_64.rpm
fb9f7ccd635c68dafd398b725c680e82cac958f6  fotomat-2.2.146-1.el7.centos.x86_64.rpm
292d342593bc59fdb6310b7a5f135452f4324f82  fotomat-2.2.146-1.jessie.amd64.deb
85c86fd8018ce85748e33398e3a9ccdc46993cde  fotomat-2.2.146-1.stretch.amd64.deb

Docker image: docker pull dienet/fotomat:v2.2

@aaron42net aaron42net released this Mar 8, 2016 · 106 commits to master since this release

Assets 2
  • Reduce memory usage under heavy load by reading image after we have lock
  • Remove max bits per pixel in favor of Sobel histogram-based photo detection heuristic
  • Split "imager" Go library into simpler "format" and "thumbnail" libraries
  • Added memory leak detection to tests
  • Substantially simplify error handling of vips.Image struct
  • Add --fetch_timeout flag to limit how long proxy will wait for an image and return 504s on timeouts
  • Update Docker build to Go 1.6
  • Flatten images with an alpha channel where every pixel is >= 90% opaque
  • Add -always_interpolate flag to allow favoring quality over speed
  • Change -sharpen default to false
  • Reduced the size of the Docker image from 261 MB to 81 MB.

Docker image: docker pull dienet/fotomat:v2.1

@aaron42net aaron42net released this Mar 8, 2016 · 142 commits to master since this release

Assets 2
  • Add VIPS cgo wrapper library, and switch from ImageMagick to VIPS
  • Depending on the operation, Fotomat is now up to 6x faster!
  • Add WebP support for both reading and writing images
  • Relicensed as Apache 2.0, for increased flexibility
  • Updated documentation, including partial Godoc support
  • Updated HTTP client user-agent, added Server and Content-Length response headers

Docker image: docker pull dienet/fotomat:v2.0