Newman's Personal Motorcade

    pconvert-rust
    TypeScript icon, indicating that this package has built-in type declarations

    0.4.11 • Public • Published

    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 NodeJS) 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

    Example

    // blends the provided image as a new image to be used
    // under the current instance
    let top = pconvert_rust::utils::read_png_from_file("top.png".to_string(), false).unwrap();
    let mut bottom = pconvert_rust::utils::read_png_from_file("bottom.png".to_string(), false).unwrap();
    
    // gathers the mask top blending algorithm function and
    // uses it to blend both images
    let blending_fn = pconvert_rust::blending::get_blending_algorithm(
        &pconvert_rust::blending::BlendAlgorithm::DestinationOver,
    );
    pconvert_rust::blending::blend_images(&mut bottom, &top, &blending_fn, &None);
    
    // "outputs" the blended image contents to the `out.png` file
    pconvert_rust::utils::write_png_to_file_d("out.png".to_string(), &bottom).unwrap();

    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(bot, top, target_file_name, algorithm, is_inline, options)
    
    // blends two ImageData objects and returns an ImageData object
    blendImagesData(bot, top, 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(bot, top, 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

    Tests

    For rust crate tests:

    cargo test

    For python API tests:

    python setup.py test

    For WASM API tests:

    npm test

    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 crates Status PyPi Status npm Status License

    Keywords

    none

    Install

    npm i pconvert-rust

    DownloadsWeekly Downloads

    1

    Version

    0.4.11

    License

    Apache-2.0

    Unpacked Size

    770 kB

    Total Files

    9

    Last publish

    Collaborators

    • platforme