Skip to main content

Image utilities with python bindings

Project description

Rusty Image Utils

Port of some slow functions from Python to a Rust library with Python bindings, mainly to experiment with rust-cpython

Published as rusty-img-utils on pypi for Python 3.5, 3.6 and 3.7 on linux and macos

Functions

darken_pixels

Darkens all pixels in the image by percentage, specified by amount. Any pixel that doesn't have a subpixel below than the cutoff will be ignored.

import img_utils
img_utils.darken_pixels(
    src_path="in_file.jpg",
    dst_path="out_file.jpg",
    amount=80,
    cutoff=200,
)

will take the in_file.jpg and lower each subpixel of the image by 80%, unless all the subpixels are above 200.

The RGB pixel 100, 220, 220 will be turned into 20, 44, 44 while 210, 220, 230 will be left alone.

extract_blues

Selects all pixels that have the blue pixel above a certain limit and either green or red the minimum difference blow the blue pixel. The selected pixels will be output as completely black while any other pixel is output as white.

import img_utils
img_utils.extract_blues(
    src_path="in_file.jpg",
    dst_path="out_file.jpg",
    min_diff=30,
    min_blue=100,
)

will take the in_file.jpg and any pixel that has the blue pixel 100 or higher and either red or green pixel at 70 or lower (100 - 30) will be black, all others will be white.

Performance comparison

Testing with 100x100 and 1000x1000 random noise images on a 2018 MBP

darken_pixels

*** Testing small size
Python_Darken: 12.14 ms avg (412 runs)
Rust_Darken: 1.15 ms avg (4357 runs)

Rust is 10.58x faster for small size

*** Testing normal size
Python_Darken: 1103.74 ms avg (5 runs)
Rust_Darken: 46.41 ms avg (108 runs)

Rust is 23.78x faster for normal size

extract_blues

*** Testing small size
Python_Extract: 4.94 ms avg (1012 runs)
Rust_Extract: 1.17 ms avg (4282 runs)

Rust is 4.23x faster for small size

*** Testing normal size
Python_Extract: 392.25 ms avg (13 runs)
Rust_Extract: 47.71 ms avg (105 runs)

Rust is 8.22x faster for normal size

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

rusty_img_utils-0.3.1-cp38-cp38-manylinux1_x86_64.whl (566.4 kB view details)

Uploaded CPython 3.8

rusty_img_utils-0.3.1-cp38-cp38-macosx_10_7_x86_64.whl (507.0 kB view details)

Uploaded CPython 3.8 macOS 10.7+ x86-64

rusty_img_utils-0.3.1-cp37-cp37m-manylinux1_x86_64.whl (566.4 kB view details)

Uploaded CPython 3.7m

rusty_img_utils-0.3.1-cp37-cp37m-macosx_10_7_x86_64.whl (507.0 kB view details)

Uploaded CPython 3.7m macOS 10.7+ x86-64

rusty_img_utils-0.3.1-cp36-cp36m-manylinux1_x86_64.whl (566.4 kB view details)

Uploaded CPython 3.6m

rusty_img_utils-0.3.1-cp36-cp36m-macosx_10_7_x86_64.whl (507.0 kB view details)

Uploaded CPython 3.6m macOS 10.7+ x86-64

rusty_img_utils-0.3.1-cp35-cp35m-manylinux1_x86_64.whl (566.4 kB view details)

Uploaded CPython 3.5m

rusty_img_utils-0.3.1-cp35-cp35m-macosx_10_7_x86_64.whl (507.0 kB view details)

Uploaded CPython 3.5m macOS 10.7+ x86-64

File details

Details for the file rusty_img_utils-0.3.1-cp38-cp38-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for rusty_img_utils-0.3.1-cp38-cp38-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 58550f951dc35ff9e6fb404c6d154b3c1a816607927c3162320e0924975fdc30
MD5 86c1f695757ca6fbc62166914c1c4b75
BLAKE2b-256 3a711c3bb5b5e40f2cccb402e2066c4d9d44b8cb29f2a74ed198792b705eeb5f

See more details on using hashes here.

File details

Details for the file rusty_img_utils-0.3.1-cp38-cp38-macosx_10_7_x86_64.whl.

File metadata

File hashes

Hashes for rusty_img_utils-0.3.1-cp38-cp38-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 a50ccf6f80388bcb0d824161f771239a56f85f1ab0b6f9f4ab97a263ce030106
MD5 3de3880c57014cc8477f9ba334ca41d6
BLAKE2b-256 d620fd3042e05718822ec435788b751b492db5a928451516dc74321abe50813c

See more details on using hashes here.

File details

Details for the file rusty_img_utils-0.3.1-cp37-cp37m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for rusty_img_utils-0.3.1-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 a89d7d72b57c4d7a13b07c800bc8abe25b6f1156068cf3ad12e6ca4535308bc8
MD5 fc520441d12ff58eb97b88f75d183a23
BLAKE2b-256 6bc4a7eafaa18d55aa903a4c77aeffe83905b5102bed90e69fe0cf2223e4f466

See more details on using hashes here.

File details

Details for the file rusty_img_utils-0.3.1-cp37-cp37m-macosx_10_7_x86_64.whl.

File metadata

File hashes

Hashes for rusty_img_utils-0.3.1-cp37-cp37m-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 4a7202ae116282cbf019d69e3492567614eb472d80d97c3795fb20a3d7a6b555
MD5 d8c45b244336982ba5b0e8eff3240509
BLAKE2b-256 c106ae6ac85c373f1f236e424ccefd62f2ab8588585afce666ae41bcb23774bb

See more details on using hashes here.

File details

Details for the file rusty_img_utils-0.3.1-cp36-cp36m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for rusty_img_utils-0.3.1-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 23b00f8a06a30fe639094b2a22f4ffc01cf33e823c8eba804f56e2b56431fb76
MD5 c10303c6678af4ad598e1dc45db2e2f5
BLAKE2b-256 0e8c8a7d430226a72568e4890e6985bef52a385afd28ff333b755650e65edf2b

See more details on using hashes here.

File details

Details for the file rusty_img_utils-0.3.1-cp36-cp36m-macosx_10_7_x86_64.whl.

File metadata

File hashes

Hashes for rusty_img_utils-0.3.1-cp36-cp36m-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 f772c19b945622afaf749f4b3029821ee70b17dc854fe804498cb3f42c133d17
MD5 8e10d4ae3de8bddf0865cff7dcfb9116
BLAKE2b-256 a724bddbd01caf059542f69fba968173fe764bbb916e27cf25189fe5d7095efc

See more details on using hashes here.

File details

Details for the file rusty_img_utils-0.3.1-cp35-cp35m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for rusty_img_utils-0.3.1-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 f95db95c7f98be8daad044387c36b66357074db5f66c10e50321b7d576bf3e75
MD5 93ee4445d0c9cf25215fba589fbf40be
BLAKE2b-256 fd318922fc7319a9809a8af66f8c5dce256f710e0c4c6ecf7ce75b2853e6301e

See more details on using hashes here.

File details

Details for the file rusty_img_utils-0.3.1-cp35-cp35m-macosx_10_7_x86_64.whl.

File metadata

File hashes

Hashes for rusty_img_utils-0.3.1-cp35-cp35m-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 ab63eb372280446073d5eaf709ca509c3670af7c2d49e48138639dca6ef495c0
MD5 e471f0da439943afc68d71a20745beb8
BLAKE2b-256 2321a8979cc4b9a7f38d8769c6f2256f05c250ad495c8a404ac7ee02f1102e95

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page