Skip to main content

cykooz_resizer

cykooz_resizer is package with the optimized version of image resizing based on Rust's crate fast_image_resize.

CHANGELOG

Installation

python3 -m pip install cykooz-resizer

Or with automatically installing Pillow:

python3 -m pip install cykooz-resizer[pillow]

Information

Supported pixel types and available optimisations:

Format Description SSE4.1 AVX2 Neon
U8 One u8 component per pixel (e.g. L) + + +
U8x2 Two u8 components per pixel (e.g. LA) + + +
U8x3 Three u8 components per pixel (e.g. RGB) + + +
U8x4 Four u8 components per pixel (e.g. RGBA, RGBx, CMYK) + + +
U16 One u16 components per pixel (e.g. L16) + + +
U16x2 Two u16 components per pixel (e.g. LA16) + + +
U16x3 Three u16 components per pixel (e.g. RGB16) + + +
U16x4 Four u16 components per pixel (e.g. RGBA16, RGBx16, CMYK16) + + +
I32 One i32 component per pixel - - -
F32 One f32 component per pixel + + -
F32x2 Two f32 components per pixel (e.g. LA32F) + + -
F32x3 Three f32 components per pixel (e.g. RGB32F) + + -
F32x4 Four f32 components per pixel (e.g. RGBA32F) + + -

Implemented resize algorithms:

  • Nearest - is nearest-neighbor interpolation, replacing every pixel with the nearest pixel in the output; for upscaling this means multiple pixels of the same color will be present.
  • Convolution with different filters:
    • box
    • bilinear
    • catmull_rom
    • mitchell
    • gaussian
    • lanczos3
  • Super sampling - is resizing an image in two steps. The first step uses the "nearest" algorithm. The second step uses "convolution" with a configurable filter.

Usage Examples

Resize Pillow's image

from PIL import Image

from cykooz_resizer import FilterType, ResizeAlg, Resizer, ResizeOptions


resizer = Resizer()
dst_size = (255, 170)
dst_image = Image.new('RGBA', dst_size)

for i in range(1, 10):
    image = Image.open('nasa_%d-4928x3279.png' % i)
    resizer.resize_pil(image, dst_image)
    dst_image.save('nasa_%d-255x170.png' % i)

# Resize using a bilinear filter and ignoring an alpha channel.
image = Image.open('nasa-4928x3279.png')
resizer.resize_pil(
    image,
    dst_image,
    ResizeOptions(
        resize_alg=ResizeAlg.convolution(FilterType.bilinear),
        use_alpha=False,
    )
)

Resize the raw image with an alpha channel

from cykooz_resizer import ImageData, PixelType, Resizer


def resize_raw(width: int, height: int, pixels: bytes):
    src_image = ImageData(
        width,
        height,
        PixelType.U8x4,
        pixels,
    )
    resizer = Resizer()
    dst_image = ImageData(255, 170, PixelType.U8x4)
    # By default, Resizer multiplies and divides by alpha channel
    # images with `U8x2`, `U8x4`, `U16x2` and `U16x4` pixels.
    resizer.resize(src_image, dst_image)
    return dst_image

Change used CPU-extensions

from cykooz_resizer import Resizer, CpuExtensions


resizer = Resizer()
resizer.cpu_extensions = CpuExtensions.sse4_1
...

Resize with using thread-pool

from cykooz_resizer import Resizer, ResizeOptions, ResizerThreadPool


...
thread_pool = ResizerThreadPool(num_threads=6)
resizer = Resizer()
resizer.resize(
    src_image,
    dst_image,
    ResizeOptions(thread_pool=thread_pool),
)
...

Benchmarks

Environment:

  • CPU: AMD Ryzen 9 5950X
  • RAM: DDR4 4000 MHz
  • Ubuntu 24.04 (linux 7.0.0)
  • Python 3.12
  • Rust 1.97.1
  • cykooz_resizer = "4.0" (single-threaded mode)

Other Python libraries used to compare of resizing speed:

Resize algorithms:

  • Nearest
  • Convolution with Bilinear filter
  • Convolution with Lanczos3 filter

Resize RGBA image 4928x3279 => 852x567

Package (time in ms) nearest bilinear lanczos3
Pillow 1.22 110.44 206.34
cykooz_resizer - none 0.21 26.52 51.28
cykooz_resizer - sse4_1 0.21 13.48 26.97
cykooz_resizer - avx2 0.21 10.79 26.72

Resize grayscale (U8) image 4928x3279 => 852x567

  • Source image nasa-4928x3279.png has converted into a grayscale image with one byte per pixel.
Package (time in ms) nearest bilinear lanczos3
Pillow 0.28 21.42 51.72
cykooz_resizer - none 0.18 5.21 12.07
cykooz_resizer - sse4_1 0.18 2.22 5.91
cykooz_resizer - avx2 0.18 1.78 4.35

Metadata

Release files for cykooz-resizer 4.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cykooz-resizer 4.0.1
File Size Uploaded
cykooz_resizer-4.0.1.tar.gz 29.8 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for cykooz-resizer 4.0.1
File
cykooz_resizer-4.0.1-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
cykooz_resizer-4.0.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64 Details
cykooz_resizer-4.0.1-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
cykooz_resizer-4.0.1-cp314-cp314-macosx_10_12_x86_64.whl CPython 3.14 CPython 3.14 macOS 10.12+ x86-64 Details
cykooz_resizer-4.0.1-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
cykooz_resizer-4.0.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
cykooz_resizer-4.0.1-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
cykooz_resizer-4.0.1-cp313-cp313-macosx_10_12_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.12+ x86-64 Details
cykooz_resizer-4.0.1-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
cykooz_resizer-4.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
cykooz_resizer-4.0.1-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
cykooz_resizer-4.0.1-cp312-cp312-macosx_10_12_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.12+ x86-64 Details
cykooz_resizer-4.0.1-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
cykooz_resizer-4.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
cykooz_resizer-4.0.1-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
cykooz_resizer-4.0.1-cp311-cp311-macosx_10_12_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.12+ x86-64 Details
cykooz_resizer-4.0.1-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
cykooz_resizer-4.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
cykooz_resizer-4.0.1-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
cykooz_resizer-4.0.1-cp310-cp310-macosx_10_12_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.12+ x86-64 Details

Total release size: 36.3 MB

Release files / cykooz_resizer-4.0.1.tar.gz

Download URL cykooz_resizer-4.0.1.tar.gz
Size 29.8 kB
Tags Source
SHA-256 checksum
How to use checksums
ffee2213a458b11ec5eb044afc7e169ba9913758a53d357ee8cb8a949e4e386c
BLAKE2b-256 checksum
How to use checksums
c8f2ce96d7a92da27a45fd7f62552f52421f0b98b28f0369dbf31704c2b5862b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / cykooz_resizer-4.0.1-cp314-cp314-win_amd64.whl

Download URL cykooz_resizer-4.0.1-cp314-cp314-win_amd64.whl
Size 1.9 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
c081e67d1d57bac9464f47aafb80b936ed8ef889d25c42784fc55fc922ce30f7
BLAKE2b-256 checksum
How to use checksums
0ea67a7a869313d4260f2ffafb927bb8a5b5e714b3db405aa7055eeb11191d3c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / cykooz_resizer-4.0.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL cykooz_resizer-4.0.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.9 MB
Tags CPython 3.14 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
5ca303d4c2bb4c6ae4ff07b175c2cdd02ea943a2fe45c62e23e40588c4141270
BLAKE2b-256 checksum
How to use checksums
1f9bd4812a24cf77d731cbcc5cbf6707675c25f948f23fb91465f2c0a17b9345
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / cykooz_resizer-4.0.1-cp314-cp314-macosx_11_0_arm64.whl

Download URL cykooz_resizer-4.0.1-cp314-cp314-macosx_11_0_arm64.whl
Size 1.5 MB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
abef4f4667899391461004fa160d74275abb181d4d6c80d317c6e84fbd74a9af
BLAKE2b-256 checksum
How to use checksums
2f8c78dbc208574296c6d52097bcc38e7936983e6a265e149c77ba59c5dd950b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / cykooz_resizer-4.0.1-cp314-cp314-macosx_10_12_x86_64.whl

Download URL cykooz_resizer-4.0.1-cp314-cp314-macosx_10_12_x86_64.whl
Size 1.9 MB
Tags CPython 3.14 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
99718b0e172cbdb6937d56244f560f6c60b297b0fdba95fdef0aaffef085809d
BLAKE2b-256 checksum
How to use checksums
90d08d9ba5c8fffd1591e82da525035db4dadeb08233ecc56ee49ebfaac0be1c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / cykooz_resizer-4.0.1-cp313-cp313-win_amd64.whl

Download URL cykooz_resizer-4.0.1-cp313-cp313-win_amd64.whl
Size 1.9 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
df59a80b0c0f64ec8d5fc1839938a8882e229f25050ac0a398b3c3b88c93ecc6
BLAKE2b-256 checksum
How to use checksums
cbc513d72fd59616fa626dfebce677052ccb2121948cdda1c54a5529cb55a978
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / cykooz_resizer-4.0.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL cykooz_resizer-4.0.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.9 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
cb45939c40364702230cfc580f655fb8099ba27443d9d30384232b40388b3bc0
BLAKE2b-256 checksum
How to use checksums
021b402593cf20ecbec7786a14b1ad1d0ee5839ab2af06ae75be13a9c02b1495
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / cykooz_resizer-4.0.1-cp313-cp313-macosx_11_0_arm64.whl

Download URL cykooz_resizer-4.0.1-cp313-cp313-macosx_11_0_arm64.whl
Size 1.5 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
cef513d4759fff1484061a23bc3de90c476efd131dcc50aa4e3b444ea9f21b08
BLAKE2b-256 checksum
How to use checksums
ff70fcef13a7d558670986f3decf9bf4284baa6a713e7891761271ee4283fd66
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / cykooz_resizer-4.0.1-cp313-cp313-macosx_10_12_x86_64.whl

Download URL cykooz_resizer-4.0.1-cp313-cp313-macosx_10_12_x86_64.whl
Size 1.9 MB
Tags CPython 3.13 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
55cbfcb0da88dabb7cdba7ae80491431896594521db20aa1d339a54990329451
BLAKE2b-256 checksum
How to use checksums
b3997ded811d7f60bc9711d5a5fd9b94571358fc6f3e24fd98ecc3aac6698de4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / cykooz_resizer-4.0.1-cp312-cp312-win_amd64.whl

Download URL cykooz_resizer-4.0.1-cp312-cp312-win_amd64.whl
Size 1.9 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
8e23bd602ba0fb0d47b23fdeeeef87330222d46a6e9caeca63490dcc6aae97cb
BLAKE2b-256 checksum
How to use checksums
01c6cab3e8eca752fade0e67c70f0aba6d4fd645f4f0652203f652bf91f75f1d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / cykooz_resizer-4.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL cykooz_resizer-4.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.9 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
d9f11f1ff9c467f763a49a723dadc1535b23e130fb29038f1e914b7a4422d91d
BLAKE2b-256 checksum
How to use checksums
525db233be6d12a3e95f364606c860d34f1eff988ff3cc37d7b45d8dc7d54c19
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / cykooz_resizer-4.0.1-cp312-cp312-macosx_11_0_arm64.whl

Download URL cykooz_resizer-4.0.1-cp312-cp312-macosx_11_0_arm64.whl
Size 1.5 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
fc9248fe877fd82ef3c169f10c4c9a365c4feada3678d845d888dd15b1c1039a
BLAKE2b-256 checksum
How to use checksums
21071f1878e11a3fe87bcbbe7e855c7f29d156caeac8863532535f69af2c0d58
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / cykooz_resizer-4.0.1-cp312-cp312-macosx_10_12_x86_64.whl

Download URL cykooz_resizer-4.0.1-cp312-cp312-macosx_10_12_x86_64.whl
Size 1.9 MB
Tags CPython 3.12 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
57d70b2270debf5ea724d561ce761c3476e43c3390859e9b0443e7593279bb92
BLAKE2b-256 checksum
How to use checksums
72ebf10043a3eee4af2c63bc84e21b5005e7d1045496815106f88a93d2e5d5c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / cykooz_resizer-4.0.1-cp311-cp311-win_amd64.whl

Download URL cykooz_resizer-4.0.1-cp311-cp311-win_amd64.whl
Size 1.9 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
24d5be46d76740cf8ad90fd3ef93ba00ae6b98585eb77a864146b987be153ae2
BLAKE2b-256 checksum
How to use checksums
81345a3497b647ed325ae5acdf457b4e438055bb2f17432d6512bea25330826b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / cykooz_resizer-4.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL cykooz_resizer-4.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.9 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
3d61ad8dc8840ef818116b08070d1d25a40355ab4b812d52829a92618b9ec8c9
BLAKE2b-256 checksum
How to use checksums
d9ccd3305c306b11fb6fda4cfa054bc34522bb29b4bd692d54c4c1dcf153f720
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / cykooz_resizer-4.0.1-cp311-cp311-macosx_11_0_arm64.whl

Download URL cykooz_resizer-4.0.1-cp311-cp311-macosx_11_0_arm64.whl
Size 1.5 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
79905f12c122ba70086c200e16c0d4ad7a49be740b127718b24470ed5eb67cb7
BLAKE2b-256 checksum
How to use checksums
a44c4de1d47c02d33555a759c579bf8e1d2d7a93e8bac8bb4ef2a3b1ed9665a9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / cykooz_resizer-4.0.1-cp311-cp311-macosx_10_12_x86_64.whl

Download URL cykooz_resizer-4.0.1-cp311-cp311-macosx_10_12_x86_64.whl
Size 1.9 MB
Tags CPython 3.11 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
31956f382ab58a1f165ad3fa7d12e0982f73dd79be509d7a3e7db178b06e2fb0
BLAKE2b-256 checksum
How to use checksums
c625e17c96affe43d3caacc1d04ca1b4c3b56a6024c2679cbf1fa114d45ec04d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / cykooz_resizer-4.0.1-cp310-cp310-win_amd64.whl

Download URL cykooz_resizer-4.0.1-cp310-cp310-win_amd64.whl
Size 1.9 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
d8eab27636046eb58cd12420f95aefc1ef7f7839ebdd73c731f74d4060506408
BLAKE2b-256 checksum
How to use checksums
8600ef40f5ee5cf1db39469948ecb3a9b1167058affa21f96eaa739cb5931bde
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / cykooz_resizer-4.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL cykooz_resizer-4.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.9 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
e08c736fef8c2a46728967ac20c31be92a3930a6f9d0e5d5473e561cb067ad8e
BLAKE2b-256 checksum
How to use checksums
c22f66c5a75a73c9dce0daec305d5707a01403e2357ae3718184222c2e8f6e73
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / cykooz_resizer-4.0.1-cp310-cp310-macosx_11_0_arm64.whl

Download URL cykooz_resizer-4.0.1-cp310-cp310-macosx_11_0_arm64.whl
Size 1.5 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
14bd30c7a3cbc1de36653cc37ba530458f97a2bc4297e0fb73fc3404f39b68a1
BLAKE2b-256 checksum
How to use checksums
3cfcb26729b4fd27dbcce5fd9863b89a7f59a8ec713fea1181bc9951848e9835
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / cykooz_resizer-4.0.1-cp310-cp310-macosx_10_12_x86_64.whl

Download URL cykooz_resizer-4.0.1-cp310-cp310-macosx_10_12_x86_64.whl
Size 1.9 MB
Tags CPython 3.10 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
166a6e18ed88522bddee1f76764525d2538ed4c1e9d8a3b18566f65374179d8a
BLAKE2b-256 checksum
How to use checksums
10b0a2bdd24da73e2562a687a9ec0741e94a35f2449b2b749236f33261bf0a04
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

4.0.1 This release

21 release files

3.1.1

21 release files

3.0.0

21 release files

2.2.1

19 release files

2.1.2

16 release files

2.1.1

13 release files

2.1

14 release files

2.0

14 release files

1.1

16 release files

1.0

15 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page