imazen / imageflow

optimal images at incredible speeds

tests state: release candidate

Docker PullsDocker Pullsview releases license: AGPLv3 または Commercial

Download blazing fast and safer tools for a modern image workflow.

  • imageflow_tool is a command-line tool for experimenting, run batch jobs, or when you want process isolation.このツールは、実験やバッチジョブを実行したり、プロセスを分離したいときに使用します。 ImageMagick の最大 17 倍の速度で処理できます。
  • imageflow_server は、JSON ジョブを実行したり、HTML から直接使用するために画像をインフライト (例: /bucket/img.jpg?w=200) で操作することができます。 ソース画像は blob ストレージ、別のサーバー、またはファイルシステムに存在することができます。 これは、はるかに機能が豊富で、セキュリティのためにリバース プロキシを使用する必要がありません。
  • libimageflow は、プログラミング言語から直接(プロセス内で)使用するためのものです。 Node バインディング、Go バインディング、Scala バインディング、Elixir バインディング、または .NET バインディングを参照してください。 あなたの言語のバインディングがまだない場合は、追加するのに1日かかることを検討してください。 Imageflow は simpleC 互換の ABI を持っており、バインディングを実装するために必要なメソッドは 4 つだけです。

Open an issue で、あなたの使用例に対するサンプル コードを書いてもらいましょう。

Querystring API Documentation

JSON API Documentation

libimageflow, imageflow_tool, and imageflow_server is available aself-contained binaries for Windows, Ubuntu, and Mac.我々はフィードバック駆動の設計を信じており、実際の使用法を合理化することは素晴らしいプロダクトへの一番の早道であると思います。 また、Linux 用の Docker イメージ (glibc と OpenSSL が必要) も提供しています。

Kickstarter での支援者と ImageResizer の多くの支援者に、このプロジェクトの実現に感謝します。商業利用のための AGPLv3 例外を必要とする場合は Imageresizing.net をご覧ください。

imageflow_tool で開始する(推奨)

imageflow_tool examples --generate – JSON ジョブと呼び出しスクリプトのある examples ディレクトリを作成します。

ImageResizer 4 querystrings:

imageflow_tool v1/querystring --in source.jpg --out thumb.jpg --command "width=50&height=50&mode=crop&format=jpg"

JSON job ファイルを送信することも可能です。

以下は、ジョブファイルの例から、複数のサイズの画像を生成したものです:

imageflow_tool v1/build --json examples/export_4_sizes/export_4_sizes.json --in waterhouse.jpg --out 1 waterhouse_w1600.jpg 2 waterhouse_w1200.jpg 3 waterhouse_w800.jpg 4 waterhouse_w400.jpg --response operation_result.json

デフォルトでは、imageflow_tool は標準出力に JSON 応答を出力します。

--debug-package は、v1/buildv1/querystring の両方で問題のある動作を再現するために .zip ファイルを作成します。

Using imageflow_server for dynamic imaging

imageflow_server start --demo

これで HTML から画像を編集できます…そして srcset は頭痛なしで使えます。

<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" />

Beyond the demo

さまざまな画像ソースをプリフィックスにマウントしたいと思うことでしょう。 --mount コマンドはコロン (:) で区切られた引数リストを解析する。 1つ目は、URLで使用するプレフィックス(http://localhost:39876/prefix/のようなもの。 2番目はエンジン名である。 残りの引数はエンジンに送られる。

  • --mount "/img/:ir4_local:C:\inetpub\wwwroot\images"
  • --mount "/proxyimg/:ir4_http:https:://myotherserver.com/imagefolder/" (コロンのダブルエスケープに注意)
  • --mount "/cachedstaticproxy/:permacache_proxy:https:://othersite.com"
  • --mount "/githubproxy/:permacache_proxy_guess_content_types:https:://raw.github.com/because/it/doesnt/support/content/types"
  • --mount "/static/":static:./assets"

あなたの言語から libimageflow を使う

  • ..NET 標準バインディングは https://github.com/imazen/imageflow-dotnet
  • Node バインディングは https://github.com/imazen/imageflow-node
  • Ruby – 基本バインディングは bindings/ruby/
  • C および C++ インターフェイスは安定しています – bindings/headers/imageflow_default.B を使ってください – このバインディングは、.NET 標準バインディングと同様に、.NET 標準バインディングと同じように使用できます。
  • Rust – Imageflow は Rust で書かれているので、imageflow_core クレートを使用できます。
  • 他の言語 – あなたの言語の FFI バインド生成ツールを使用し、どのヘッダーファイルが一番好きかを与えてください。

また、imageflow_tool はあなたのニーズに対して十分に高速であることがわかるでしょう。

このプロジェクト内のクレート

  • imageflow_abi – libimageflow/imageflow.dll の安定した API です。libimageflow のヘッダは bindings/headers
  • imageflow_tool – コマンドラインツール
  • imageflow_server – HTTP サーバ
  • c_components – C ソースを含む rust クレート
  • c_components/tests – Cコンポーネントのテスト
  • imageflow_types – ほとんどのクレートで使用される共有型。 JSONシリアライズ付き
  • imageflow_helpers – 共通ヘルパー関数とユーティリティ
  • imageflow_riapi – RIAPI と ImageResizer4 互換パースとレイアウト
  • imageflow_core メインライブラリと実行エンジン

既知の不具合と不足機能(2020年5月現在)

欠陥

  • imageflow_serverはまだJSON APIを公開しない。
  • ファズテストやサードパーティによる監査はまだ行われていません。

Missing features

  • Blurring.

Delaying features

  • Job cost prediction (delayed – no interest from community)

C依存関係があるので、イメージフローコイルにRustだけでは不十分でしょう。

  1. プラットフォーム固有の前提条件をインストールします (以下の適切なセクションを見つけます)。
  2. このリポジトリをクローンして cd してください。 git clone [email protected]:imazen/imageflow.git && cd imageflow)

いずれかのプラットフォームで bash を使用している場合。 2169>

  • ./build.sh clean – クリーンアップ
  • ./build.sh test – すべてのテストの実行
  • ./build.sh debug – スローデバッグバイナリの生成
  • ./build.sh release – リリースバイナリ生成
  • ./build.sh install – リリースバイナリ /usr/local にインストール (must run `.*) –
  • ./build.sh clean build.sh – デバッグバイナリの生成
    • ./build.sh debug – リリースバイナリの実行/build.sh release を最初に実行する必要があります)
    • ./build.sh uninstall – リリースバイナリをアンインストール

    build.sh バイナリを ./artifacts/ directory

    Windows であれば win_enter_env.bat で作成したウィンドウでビルドコマンドのみを実行するようにします。

    また、直接 cargo を使用してビルドすることもできますが、この場合、バイナリは代わりに ./target/release に置かれます。* cargo test --all はデバッグ (slooow) モードで Imageflow をテストします* cargo build --package imageflow_abi --releaselibimageflow/imageflow.dll* cargo build --package imageflow_tool --releaseimageflow_tool(.exe)* cargo build --package imageflow_server --releaseimageflow_server(.exe)* cargo build --all --release はリリースモードですべてをコンパイルします * cargo doc --no-deps --all --release はドキュメントを生成します。

    Building from Source with Docker

    Imageflow CI環境を複製する場合。

    1. Docker
    2. のインストール

    3. Bash セッションからの実行 (Docker + Windows WSL, macOS, or linux)
    4. git clone [email protected]:imazen/imageflow.gitcd imageflow./build_via_docker.sh debug

    これは使用する docker イメージに固有の ~/.docker_imageflow_caches 内キャッシュを作成するものです。 インスタンスはエフェメラルであり、状態はキャッシュ内にのみ存在します。

    公式 Dockerfiles は、より詳細な環境設定手順を得るための素晴らしい場所です。

Linux Pre-requisites

(tested on Ubuntu 16.04 and 18.04.)

#Install Rust 1.41+ by running`curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain stable`#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 `

Mac OS の前提条件

  1. まだインストールしていない場合は XCode Command-Line Tools をインストール
  2. まだインストールしていない場合は Homebrew をインストール
  3. Install nasm, pkg-config, and wgetbrew install nasm pkg-config wget
  4. Install Rust

Windows WSL (Ubuntu Bionic Subsystem) Pre-requisites

  1. Install Ubuntu 18.0.
  2. Ubuntu 18.04をWindowsストアからインストールし、ユーザー名/パスワードを作成する
  3. sudo apt-get update利用可能なパッケージを更新する
  4. Rust 1.4をインストールする
  5. Windows WSL(Ubuntuバイオニック・サブシステム)をインストールする。28+ を実行curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain stable
  6. 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
  7. (任意)グラフィカルなテキスト エディターを使用するには、 imageflow を “Windows” ディレクトリにダウンロードしてから Ubuntu の場所にマップする必要があるでしょう。たとえば、Documents/imageflow に imageflow をクローンした場合、次のように実行します:ln -s /mnt/c/Users//Documents/imageflow ~/win_imageflow
  8. Close and re-open Ubuntu

Windows 10 Pre-requirements

  1. Install Visual Studio 2017 Build Tools (separately or as a VS component)
  2. Install Git 64-bit.
  3. Run As Administrator the NASM 64-bit installer – it will not prompt.
  4. Install Rust 64-bit if you want 64-bit Imageflow or not if Rust 32-bit.Install toolchain stable as the default, and confirm it adding to PATH.このツールチェーンはデフォルトとしてインストールします。
  5. Open the command line and switch to this repository’s root directory
  6. Edit ci/wintools/SETUP_PATH.bat to ensure that rust/cargo, nasm, git, and Git/mingw64/bin is all in %PATH%.
  7. Run win_enter_env.bat to start a sub-shell (edit it if you want a 32-bit build)
  8. すべての build commands should be run in the sub-shell.All build commands to be performed in the bottom.すべての build コマンドをサブシェルで実行します。

Web 用の画像処理はどのように学ぶのでしょうか。

まず、文脈のために High Performance Images を読みます。

このテーマに関する優れた教科書はあまりありません。 私の個人的な本棚からいくつか紹介します。 残りの部分は、多くの一般的な画像処理ライブラリのソース コードを読むことで見つけました。 Core Algorithms を前後から読み、次に Digital Image Warping を読みます。 バイリニア補間」や「Lab 色空間」といった特定の検索語を使用します。

  • Digital Image Warping
  • Computer Graphics: Principles and Practice in C (2nd Edition)
  • Principles of Digital Image Processing: 基本的なテクニック
  • デジタル画像処理の原理: コア・アルゴリズム
  • Principles of Digital Image Processing: Advanced Methods

OpenCV, LibGD, FreeImage, Libvips, Pixman, Cairo, ImageMagick, stb_image, Skia, FrameWave のソースコードは、実際の実装や考察を理解するのに、非常に有用であることがわかりました。 ほとんどの教科書は、無限平面を仮定し、1個ずつの誤差、浮動小数点の制限、色空間の正確さ、境界領域内の演算対称性を無視します。 私は、どの教科書も正確な参考文献として推奨することはできませんが、概念的な出発点としてのみ利用することができます。 画像ライブラリを作成する際の注意点についてメモしておきます。

また、コンピュータビジョンと画像作成は大きく異なることを念頭に置いてください。 たとえば、コンピュータ ビジョンでは、リサンプリングの精度はほとんど重要ではありません。 しかし、画像作成では、平均的な開発者よりもはるかに鋭い視覚的知覚を持つ写真家に画像を提供することになります。 作成された画像は、他のCSSや画像と並べてレンダリングされるため、少しでも不正確な部分があると、かなり目につきます。 Lightroomと競合するのは、視覚的に完璧な結果を出すオフラインのツールです。 エンドユーザー用ソフトウェアは、フォトグラファーが自分の仕事を壊していると感じたら、捨てられてしまうでしょう。

コメントを残す

メールアドレスが公開されることはありません。