About this project
Pledge $1 or more for continued early access to binaries.
Imageflow includes an HTTP image server, an HTTP image proxy, a dynamic library for direct FFI use, and a set of command-line tools (one of which you can download today). Source code on Github. List of planned language bindings here.
Hours left to back Imageflow and have us revolutionize your image handling & #webperf! More speed = more sales.
Imageflow is open-source software which scales, edits, and optimizes images. It’s similar in purpose to our existing software, ImageResizer, but is faster, produces better results, and is not bound to the Windows API. Imageflow supports Linux, Mac, and Windows – and can be used from any programming language.
Imageflow is the first solution to offer uncompromising security and visual quality – but it also trounces competitors in benchmarks. It lets millions of websites and applications fix the weakest link in their server security and will enable new ventures that require instant, on-the-fly image processing.
Kickstarter automatically re-processes all images, so our visuals below are blurrier than we'd like. In fact, Kickstarter would be a perfect candidate for imageflow-server, which would make the following images much sharper!
There are two components to Imageflow: imageflow-server and libimageflow. libimageflow is built with C11 (and soon Rust), and imageflow-server (when created) will use Rust exclusively.
Imageflow-server can be deployed to the cloud in just a few clicks, and can be used by editing URLs in your browser (figure B) or by using the REST APIs. Imageflow-server sends the right number of pixels based on your device size (figure A), and can cut load time in half for responsive websites that haven't yet implemented responsive images. Reducing site load time is often the cheapest way to boost sales and SEO ranking.
With imageflow-server, you can map prefixes to different backend storage locations, like S3 or other HTTP servers. If you’ve been putting off moving to responsive images, imageflow-server will help make the transition painless.
For large deployments, you can fully offload all imaging operations to separate servers.
libimageflow is the image library you wish your stack shipped with. It’s correct, fast, safe, and has an evolvable API. It creates compact and sharp files. Its API was designed to work with even the most troublesome multi-tenant host languages.
What problems does Imageflow solve?
Image toolkits and codecs are a notorious exploitation vector. ImageMagick is intended to be used in a sandbox. In practice, it is most often run by privileged server accounts. A recent string of vulnerabilities in ImageMagick was given the ImageTragick moniker to raise awareness prior to the hacking of many sites. Even after the ImageTragick patches, ImageMagick still has unfixed remote code execution vulnerabilities which are equally easy to exploit.
Solution: Imageflow puts security first by retaining a small and testable codebase, being cautious with dependencies, and making Coverity scans and Valgrind testing an automated part of the development process.
ABYSMAL VISUAL QUALITY
Most visual artefacts you see in images today are entirely avoidable. Decades of hacky approximations, bad mathematical and color space reasoning, and legacy compression behaviors combine to establish a very low bar for image quality.
Solution: With correct math and highly optimized encoders, Imageflow sets a new bar for image quality. We're rebuilding everything from the ground up while performing exhaustive testing of inputs, lookup tables, and tuning parameters.
BLOATED FILE SIZE
Images make up the majority of bytes on most websites. Images usually average 2-3x larger than necessary for the same perceptual quality.
Solution: Imageflow focuses on a smaller set of highly tuned codecs, and should outperform ImageMagick by a significant margin across all file types. We’re seeking licensing agreements for libimagequant and other best-in-class algorithms as well.
Basic ImageMagick operations can take seconds per image. For on-demand imaging in e-commerce, there’s a hard latency ceiling before you start losing customers, and it’s far lower than 1500ms.
Solution: There’s no valid reason your web server can’t deliver image quality on par with Adobe Lightroom, and do so in 8 to 200 milliseconds. Imageflow enables that scenario. We don’t need to shy away from on-the-fly image processing; we just need to focus on it and invest in our tools.
How does Imageflow relate to ImageResizer?
Imageflow is ImageResizer’s future. Without it, ImageResizer can’t become cross-platform, run on .NET Core, or be deployed on Windows Server Core.
The Kickstarter 18-month transitional support contract (for both ImageResizer and Imageflow) is the only way to get paid ImageResizer support.
Your support in backing Imageflow will make ImageResizer 5 a reality. And if you just can’t wait, it’s possible to use libimageflow from C# today (if you’re willing to P/Invoke).
What are the benefits of using Imageflow?
Our promise with Imageflow is to deliver security, image quality, and speed – in that order. Read our pledge to you.
- libimageflow can be used directly over FFI by any mainstream language. The second component, imageflow-server, speaks HTTP – and any networked device can use it. A human can use it from their web browser by adding ?width=200 to the image URL (or any of 30 other commands).
- libimageflow has ~10x the throughput of ImageMagick, yet puts security first. It is correct, fast, and has an evolvable JSON API. Imageflow doesn’t try to be ImageMagick; it supports only the core image operations and web-safe image formats needed by most applications and websites.
- imageflow-server offers a JSON API – You can POST a JSON operation list or graph along with multiple inputs and outputs, and the results are returned to you. libimageflow can accurately predict the cost for any operation, which permits ideal work redistribution and load balancing.
- Imageflow supports Linux, Mac, and Windows.
What about existing projects?
We've been very thorough, and we would not be running a Kickstarter if an existing library was suitable to this task.
Here we explain why the most popular libraries don't work for us due to poor image quality and security. If you'd like us to cover a specific library, just contact us or open a Github issue.
Why back our Kickstarter?
- Licenses are 41%, 61%, and 85% off. You’ll pay up to 7 times more if you buy later.
- For just $600 (instead of $2,900) you can sell a hosted version of imageflow-server. This ultimate redistribution and SaaS license is restricted to B Corps or small businesses that meet the revenue limits.
- If you’re an ImageResizer user, the Transitional Support Contract is the only way to purchase paid support.
- It’s the best (and cheapest) way to get 1-on-1 consultation and support.
- It’s the fastest way to remove the liability of ImageMagick from your infrastructure.
- Support and transition assistance is heavily discounted via the Kickstarter.
- This is a very low-risk project.
Imageflow can’t happen without your support. We’ve invested 4 years and over $100,000 in solving the hardest problems specifically for Imageflow. We now face a long list of clearly defined tasks with known solutions, but need your help to complete Imageflow and bring it to to your platform and tools.
It’s crucial that we ensure a sustainable model for security maintenance, so much of Imageflow will remain copylefted until we reach a funding level that can guarantee long-term support for you, our customers. Your help in promoting this Kickstarter is essential to its success.
- $50,000 (expenses only) – Proceeds will cover our hardware, software, project, and hosting expenses for the next year of development, and fund collaboration with some of the world’s best compression and optimization experts. At this funding level, Imazen covers all in-house labor costs and Imageflow will be licensed as AGPLv3 with commercial options.
- $125,000 – Support contracts for Imageflow will be made available on an ongoing basis, even after the Kickstarter ends. Official C# bindings & Core CLR support will also be guaranteed at this level. (We now have a volunteer for unofficial bindings, so you may see C# support sooner!)
- $200,000 – We create official PHP bindings and integrate libimageflow with Wordpress. Imageflow becomes GPLv2 + GPLv3 dual licensed so it can be distributed with Wordpress. GPL licensing would make commercial SaaS licenses redundant.
- $500,000 – We immediately relicense Imageflow as MIT/Apache 2 so it can be redistributed with every platform, language, tool and CMS. This level funds extended codec research and optimization, with potential 2x performance increases. Apache 2 licensing would make all commercial licenses redundant.
Much of our work on Imageflow will involve improvements to existing projects (like libjpeg-turbo/mozjpeg and libpng). This work will not be copylefted, but licensed as the original project.
We have also granted LibGD (the most widely used image manipulation library on servers today) license to back-port any code from Imageflow that they can use. In 2013/2014 we focused on improving LibGD and adapting it for potential use from .NET (libgd.net). In 2015 we had to pivot to our own library due to scope and API differences we couldn't work around without sacrificing core design priorities, and we started laying the groundwork for Imageflow.
All backers get early access to binary releases and regular updates about the project. We’re developing with transparency, in the open, at github.com/imazen/imageflow.
- July 15th, 2016 (alpha release of imageflow-tool) You’ll be able to experiment with a command-line version of Imageflow before the end of July. This will let you verify imageflow meets your needs - and give us immediate feedback if it doesn’t.
- July 1st, 2016 ImageResizer to Imageflow Transitional Support Contracts begin (18mo, Platinum tier).
- September 1st, 2016 Clock starts on timed licenses (if we have a usable beta – otherwise the clock starts when a usable beta is released).
- October 1st, 2016 Imageflow Platinum Plus Integration Contracts begin (12mo, Platinum Plus).
- August 1st, 2017 (stable release of imageflow-server and libimageflow) Official Ruby and Node bindings for libimageflow will be available at the this time.
- October 1st, 2017 Everyone has their license keys, and license key enforcement is enabled.
- December 1st, 2017 We deliver official C# bindings (if we hit the $125k stretch goal).
- January 1st, 2017 We deliver official PHP bindings (if we hit the $200k stretch goal).
***Anyone who pledges $1 or more during the Kickstarter will receive free early access to binaries.
Risks and challenges
Ten years of image processing research has given us a solid foundation, some well-proven scaling algorithms and has enabled us to create a working prototype of the operation graph execution engine. We do not anticipate risks related to speed or image quality.
However, our comprehensive strategy for blending document type detection, automatic codec selection, and tuning has not yet been proven. But the independent techniques have been explored and we are optimistic that we can bring them together.Learn about accountability on Kickstarter
Support this project
- (26 days)