pconvert-rust 0.3.0

Rust version of P(NG)Convert, a simple PNG conversion tool.
docs.rs failed to build pconvert-rust-0.3.0
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build: pconvert-rust-0.5.1

P(NG)Convert Rust

The Rust version of the famous P(NG)Convert from Hive Solutions.

This Rust crate can be used as a command line application, as a crate in another rust project, as a Web Assembly module (able to be used within JavaScript that targets web browsers) or as a python package.

Command Line Application

Compiling & Executing

Build and run with:

cargo run

Alternatively, compile first with:

cargo build

and then run the binary with:

./target/debug/pconvert-rust

Additionally, for better code optimization, compile with the --release flag:

cargo build --release

and then run the release binary with:

./target/release/pconvert-rust

Usage

$ pconvert-rust
Usage: pconvert-rust <command> [args...]
where command can be one of the following: compose, convert, benchmark, version
$ pconvert-rust compose <dir>
$ pconvert-rust convert <file_in> <file_out>
$ pconvert-rust benchmark <dir> [--parallel]
$ pconvert-rust version

WebAssembly (WASM) Module

Compiling & Executing

Follow this guide on how to install wasm-pack.

To build, use the wasm-extension feature:

wasm-pack build -- --features wasm-extension

To run the demo, follow this.

Usage

Check the demo site to see how to use the PConvert WASM module.

JavaScript API exposed:

// blends two File objects and returns a File object
blendImages(top, bot, target_file_name, algorithm, is_inline, options)

// blends two ImageData objects and returns an ImageData object
blendImagesData(top, bot, algorithm, is_inline, options)

// blends multiple File objects and returns a File object
blendMultiple(image_files, target_file_name, algorithm, algorithms, is_inline, options)

// blends multiple ImageData objects  and returns an ImageData object
blendMultipleData(images, algorithm, algorithms, is_inline, options)

// returns a JSON of module constants (e.g. ALGORITHMS, FILTER_TYPES, COMPILER_VERSION, ...)
getModuleConstants()

// benchmarks and prints to console various times for different combinations of blending algorithms, compression algorithms and filters for `blendImages`
blendImagesBenchmarkAll(top, bot, is_inline)

// benchmarks and prints to console various times for different combinations of blending algorithms, compression algorithms and filters for `blendMultiple`
blendMultipleBenchmarkAll(image_files, is_inline)

Python package

Compiling & Executing

This crate can be installed as a python package through the use of pip. Simply run:

pip install .

Usage

Check this folder for examples.

Import the python package with:

import pconvert_rust

Python API exposed. The parameter options is a python dictionary of optional parameters and if num_threads is specified with a value of 1 or more, the work load will be distributed across multiple threads (belonging to a internally managed thread pool).

# blends two images read from the local file system and writes the result to the file system
blend_images(bot_path, top_path, target_path, algorithm, is_inline, options)

# blends multiple images read from the local file system and writes the result to the file system
blend_multiple(img_paths, out_path, algorithm, algorithms, is_inline, options)

# returns a python dict with summary information about the internal thread pool (size, active jobs, queued jobs)
get_thread_pool_status()

# access module constants (e.g. ALGORITHMS, FILTER_TYPES, COMPILER_VERSION, ...)
pconvert_rust.ALGORITHMS
pconvert_rust.FILTER_TYPES
pconvert_rust.COMPILER_VERSION

Documentation

Generate documentation using:

cargo doc --lib --all-features

License

P(NG)Convert Rust is currently licensed under the Apache License, Version 2.0.

Build Automation

Build Status Build Status GitHub PyPi Status npm Status License