| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Download blazing fast and uniquely safer tools for a modern image workflow.
Note: We aren't labeling Imageflow as 'stable' until enough people have tested it. Please help us test and provide feedback! Also, please, please, please send us 'challenging' images and tasks.
These all offer the JSON /build API as well as the traditional width=300&height=200&mode=crop&format=jpg command string form. Each is available as a self-contained binary for Windows, Ubuntu, and Mac. We also offer Docker images for Linux (where glibc and OpenSSL are required).
libimageflow offers interactive job manipulation as well like /tell_decoder, /get_image_info, and /execute. Unless you are using memory buffers for I/O, it's better to use /build.
We thank our backers on Kickstarter and the many supporters of ImageResizer for making this project a reality. Email support@imageflow.io if you need an AGPLv3 exception for commercial use.
imageflow_tool examples --generate - creates an examples directory with JSON jobs and invocation scripts.
You can use command strings that are compatible with ImageResizer 4 querystrings:
imageflow_tool v0.1/ir4 --in source.jpg --out thumb.jpg --command "width=50&height=50&mode=crop&format=jpg"
Or submit a JSON job file. JSON jobs can have multiple inputs and outputs, and can represent any kind of operation graph.
The following generates multiple sizes of an image from an example job file:
imageflow_tool v0.1/build --json examples/export_4_sizes/export_4_sizes.json
--in http://s3-us-west-2.amazonaws.com/imageflow-resources/test_inputs/waterhouse.jpg
--out 1 waterhouse_w1600.jpg
2 waterhouse_w1200.jpg
3 waterhouse_w800.jpg
4 waterhouse_w400.jpg
--response operation_result.json
By default, imageflow_tool prints a JSON response to stdout. You write this to disk with --response.
--debug-package will create a .zip file to reproduce problematic behavior with both v0.1/build and v0.1/ir4. Please submit bug reports; we try to make it easy.
imageflow_server start --demo
Now you can edit images from HTML... and use srcset without headache.
<img src="http://localhost:39876/demo_images/u3.jpg?w=300" />
<img src="" srcset=" http://localhost:39876/demo_images/u3.jpg?w=300 300w
http://localhost:39876/demo_images/u3.jpg?w=800 800w
http://localhost:39876/demo_images/u3.jpg?w=1600 1600w" />
You'll want to mount various image source locations to prefixes. The --mount command parses a colon (:) delimited list of arguments. The first is the prefix you'll use in the URL (like http://localhost:39876/prefix/. The second is the engine name. Remaining arguments are sent to the engine.
You also may find that imageflow_tool is quite fast enough for your needs.
You'll need more than just Rust to compile Imageflow, as it has a couple C dependencies.
If you are using bash on any platform, you should be able to use build.sh
build.sh places binaries in the ./artifacts/ directory
If you are on Windows, only run build commands in the window created by win_enter_env.bat.
You can also build using cargo directly, although this will place binaries in ./target/release instead. * cargo test --all to test Imageflow in debug (slooow) mode * cargo build --package imageflow_abi --release to compile libimageflow/imageflow.dll * cargo build --package imageflow_tool --release to compile imageflow_tool(.exe) * cargo build --package imageflow_server --release to compile imageflow_server(.exe) * cargo build --all --release to compile everything in release mode * cargo doc --no-deps --all --release to generate documentation.
If you want to replicate the Imageflow CI environment:
git clone git@github.com:imazen/imageflow.git
cd imageflow
./build_via_docker.sh debugThis will create caches within ~/.docker_imageflow_caches specific to the docker image used. Instances will be ephemeral; the only state will be in the caches.
The official Dockerfiles are also a great place to get more detailed environment setup steps, as we don't list steps for setting up:
(tested on Ubuntu 14.04, 16.04, and 18.04.)
#Install Rust 1.28+ by running
`curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain beta`
#Ensure build tools are installed (git, curl, wget, gcc, g++, nasm, pkg-config, openssl, ca-certificates)
`sudo apt-get install git wget curl build-essential pkg-config libssl-dev libpng-dev nasm `First, read High Performance Images for context.
There are not many great textbooks on the subject. Here are some from my personal bookshelf. Between them (and Wikipedia) I was able to put together about 60% of the knowledge I needed; the rest I found by reading the source code to many popular image processing libraries.
I would start by reading Principles of Digital Image Processing: Core Algorithms front-to-back, then Digital Image Warping. Wikipedia is also a useful reference, although the relevant pages are not linked or categorized together - use specific search terms, like "bilinear interpolation" and "Lab color space".
I have found the source code for OpenCV, LibGD, FreeImage, Libvips, Pixman, Cairo, ImageMagick, stb_image, Skia, and FrameWave is very useful for understanding real-world implementations and considerations. Most textbooks assume an infinite plane, ignore off-by-one errors, floating-point limitations, color space accuracy, and operational symmetry within a bounded region. I cannot recommend any textbook as an accurate reference, only as a conceptual starting point. I made some notes regarding issues to be aware of when creating an imaging library.
Also, keep in mind that computer vision is very different from image creation. In computer vision, resampling accuracy matters very little, for example. But in image creation, you are serving images to photographers, people with far keener visual perception than the average developer. The images produced will be rendered side-by-side with other CSS and images, and the least significant bit of inaccuracy is quite visible. You are competing with Lightroom; with offline tools that produce visually perfect results. End-user software will be discarded if photographers feel it is corrupting their work.
| Back | FazBrowse Home | New Git URL |