cykooz.resizer


Namecykooz.resizer JSON
Version 2.2.1 PyPI version JSON
download
home_page
SummaryA fast image resizer
upload_time2024-02-15 18:45:30
maintainer
docs_urlNone
authorKirill Kuzminykh <cykooz@gmail.com>
requires_python>=3.7
license
keywords image resize simd
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # cykooz.resizer

```cykooz.resizer``` is package with the optimized version of image resizing
based on Rust's crate [fast_image_resize](https://crates.io/crates/fast_image_resize).

[CHANGELOG](https://github.com/Cykooz/cykooz.resizer/blob/main/CHANGES.md)

## Installation

```shell
python3 -m pip install cykooz.resizer
```

Or with automatically installing Pillow:

```shell
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                                 |   -    |  -   |  -   |

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
  - lanczos3
- Super sampling - is resizing an image in two steps.
  The first step uses the "nearest" algorithm. The second step uses "convolution" 
  with configurable filter.


## Usage Examples

### Resize Pillow's image

```python
from PIL import Image

from cykooz.resizer import FilterType, ResizeAlg, Resizer


resizer = Resizer(ResizeAlg.convolution(FilterType.lanczos3))
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 raw image with an alpha channel

```python
from cykooz.resizer import AlphaMulDiv, FilterType, ImageData, PixelType, ResizeAlg, Resizer

def resize_raw(width: int, height: int, pixels: bytes):
    src_image = ImageData(
        width,
        height,
        PixelType.U8x4,
        pixels,
    )
    alpha_mul_div = AlphaMulDiv()
    resizer = Resizer(ResizeAlg.convolution(FilterType.lanczos3))
    dst_image = ImageData(255, 170, PixelType.U8x4)
    alpha_mul_div.multiply_alpha_inplace(src_image)
    resizer.resize(src_image, dst_image)
    alpha_mul_div.divide_alpha_inplace(dst_image)    
    return dst_image
```

### Change used CPU-extensions

```python
from cykooz.resizer import FilterType, ResizeAlg, Resizer, CpuExtensions


resizer = Resizer(ResizeAlg.convolution(FilterType.lanczos3))
resizer.cpu_extensions = CpuExtensions.sse4_1
...
```

## Benchmarks

Environment:
- CPU: AMD Ryzen 9 5950X
- RAM: DDR4 3800 MHz
- Ubuntu 22.04 (linux 6.5.0)
- Python 3.10
- Rust 1.75.0
- cykooz.resizer = "2.2"

Other Python libraries used to compare of resizing speed:
- Pillow = "10.2.0" (https://pypi.org/project/Pillow/)

Resize algorithms:
- Nearest
- Convolution with Bilinear filter
- Convolution with Lanczos3 filter

### Resize RGBA image 4928x3279 => 852x567

- Source image [nasa-4928x3279.png](https://github.com/Cykooz/cykooz.resizer/blob/main/tests/data/nasa-4928x3279.png)

| Package (time in ms)       | nearest | bilinear | lanczos3 |
|:---------------------------|--------:|---------:|---------:|
| Pillow                     |    0.88 |   105.27 |   200.80 |
| cykooz.resizer             |    0.20 |    29.64 |    58.83 |
| cykooz.resizer - sse4_1    |    0.20 |    14.83 |    27.87 |
| cykooz.resizer - avx2      |    0.20 |    10.44 |    21.34 |


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

- Source image [nasa-4928x3279.png](https://github.com/Cykooz/cykooz.resizer/blob/main/tests/data/nasa-4928x3279.png)
  has converted into grayscale image with one byte per pixel.

| Package (time in ms)       | nearest | bilinear | lanczos3 |
|:---------------------------|--------:|---------:|---------:|
| Pillow U8                  |    0.27 |    23.78 |    61.23 |
| cykooz.resizer U8          |    0.17 |     5.29 |    11.44 |
| cykooz.resizer U8 - sse4_1 |    0.17 |     2.30 |     5.90 |
| cykooz.resizer U8 - avx2   |    0.17 |     1.85 |     4.17 |


            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "cykooz.resizer",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": "",
    "keywords": "image,resize,simd",
    "author": "Kirill Kuzminykh <cykooz@gmail.com>",
    "author_email": "Kirill Kuzminykh <cykooz@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/a2/6e/72a817190daae9d4bab1b3fd265bddcfd7c9d4b7ea1d33309c331c967a82/cykooz.resizer-2.2.1.tar.gz",
    "platform": null,
    "description": "# cykooz.resizer\n\n```cykooz.resizer``` is package with the optimized version of image resizing\nbased on Rust's crate [fast_image_resize](https://crates.io/crates/fast_image_resize).\n\n[CHANGELOG](https://github.com/Cykooz/cykooz.resizer/blob/main/CHANGES.md)\n\n## Installation\n\n```shell\npython3 -m pip install cykooz.resizer\n```\n\nOr with automatically installing Pillow:\n\n```shell\npython3 -m pip install cykooz.resizer[pillow]\n```\n\n## Information\n\nSupported pixel types and available optimisations:\n\n| Format | Description                                                   | SSE4.1 | AVX2 | Neon |\n|:------:|:--------------------------------------------------------------|:------:|:----:|:----:|\n|   U8   | One `u8` component per pixel (e.g. L)                         |   +    |  +   |  +   |\n|  U8x2  | Two `u8` components per pixel (e.g. LA)                       |   +    |  +   |  +   |\n|  U8x3  | Three `u8` components per pixel (e.g. RGB)                    |   +    |  +   |  +   |\n|  U8x4  | Four `u8` components per pixel (e.g. RGBA, RGBx, CMYK)        |   +    |  +   |  +   |\n|  U16   | One `u16` components per pixel (e.g. L16)                     |   +    |  +   |  +   |\n| U16x2  | Two `u16` components per pixel (e.g. LA16)                    |   +    |  +   |  +   |\n| U16x3  | Three `u16` components per pixel (e.g. RGB16)                 |   +    |  +   |  +   |\n| U16x4  | Four `u16` components per pixel (e.g. RGBA16, RGBx16, CMYK16) |   +    |  +   |  +   |\n|  I32   | One `i32` component per pixel                                 |   -    |  -   |  -   |\n|  F32   | One `f32` component per pixel                                 |   -    |  -   |  -   |\n\nImplemented resize algorithms:\n- Nearest - is nearest-neighbor interpolation, replacing every pixel with the \n  nearest pixel in the output; for upscaling this means multiple pixels of the\n  same color will be present.\n- Convolution with different filters:\n  - box\n  - bilinear\n  - catmull_rom\n  - mitchell\n  - lanczos3\n- Super sampling - is resizing an image in two steps.\n  The first step uses the \"nearest\" algorithm. The second step uses \"convolution\" \n  with configurable filter.\n\n\n## Usage Examples\n\n### Resize Pillow's image\n\n```python\nfrom PIL import Image\n\nfrom cykooz.resizer import FilterType, ResizeAlg, Resizer\n\n\nresizer = Resizer(ResizeAlg.convolution(FilterType.lanczos3))\ndst_size = (255, 170)\ndst_image = Image.new('RGBA', dst_size)\n\nfor i in range(1, 10):\n    image = Image.open('nasa_%d-4928x3279.png' % i)\n    resizer.resize_pil(image, dst_image)\n    dst_image.save('nasa_%d-255x170.png' % i)\n```\n\n### Resize raw image with an alpha channel\n\n```python\nfrom cykooz.resizer import AlphaMulDiv, FilterType, ImageData, PixelType, ResizeAlg, Resizer\n\ndef resize_raw(width: int, height: int, pixels: bytes):\n    src_image = ImageData(\n        width,\n        height,\n        PixelType.U8x4,\n        pixels,\n    )\n    alpha_mul_div = AlphaMulDiv()\n    resizer = Resizer(ResizeAlg.convolution(FilterType.lanczos3))\n    dst_image = ImageData(255, 170, PixelType.U8x4)\n    alpha_mul_div.multiply_alpha_inplace(src_image)\n    resizer.resize(src_image, dst_image)\n    alpha_mul_div.divide_alpha_inplace(dst_image)    \n    return dst_image\n```\n\n### Change used CPU-extensions\n\n```python\nfrom cykooz.resizer import FilterType, ResizeAlg, Resizer, CpuExtensions\n\n\nresizer = Resizer(ResizeAlg.convolution(FilterType.lanczos3))\nresizer.cpu_extensions = CpuExtensions.sse4_1\n...\n```\n\n## Benchmarks\n\nEnvironment:\n- CPU: AMD Ryzen 9 5950X\n- RAM: DDR4 3800 MHz\n- Ubuntu 22.04 (linux 6.5.0)\n- Python 3.10\n- Rust 1.75.0\n- cykooz.resizer = \"2.2\"\n\nOther Python libraries used to compare of resizing speed:\n- Pillow = \"10.2.0\" (https://pypi.org/project/Pillow/)\n\nResize algorithms:\n- Nearest\n- Convolution with Bilinear filter\n- Convolution with Lanczos3 filter\n\n### Resize RGBA image 4928x3279 => 852x567\n\n- Source image [nasa-4928x3279.png](https://github.com/Cykooz/cykooz.resizer/blob/main/tests/data/nasa-4928x3279.png)\n\n| Package (time in ms)       | nearest | bilinear | lanczos3 |\n|:---------------------------|--------:|---------:|---------:|\n| Pillow                     |    0.88 |   105.27 |   200.80 |\n| cykooz.resizer             |    0.20 |    29.64 |    58.83 |\n| cykooz.resizer - sse4_1    |    0.20 |    14.83 |    27.87 |\n| cykooz.resizer - avx2      |    0.20 |    10.44 |    21.34 |\n\n\n### Resize grayscale (U8) image 4928x3279 => 852x567\n\n- Source image [nasa-4928x3279.png](https://github.com/Cykooz/cykooz.resizer/blob/main/tests/data/nasa-4928x3279.png)\n  has converted into grayscale image with one byte per pixel.\n\n| Package (time in ms)       | nearest | bilinear | lanczos3 |\n|:---------------------------|--------:|---------:|---------:|\n| Pillow U8                  |    0.27 |    23.78 |    61.23 |\n| cykooz.resizer U8          |    0.17 |     5.29 |    11.44 |\n| cykooz.resizer U8 - sse4_1 |    0.17 |     2.30 |     5.90 |\n| cykooz.resizer U8 - avx2   |    0.17 |     1.85 |     4.17 |\n\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "A fast image resizer",
    "version": "2.2.1",
    "project_urls": null,
    "split_keywords": [
        "image",
        "resize",
        "simd"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a9f19975a158b247c17cf2047efc4101deb16cd1c4fdc608e3885b617fabfa40",
                "md5": "1c81b7f14469c3ed0473c28be4572561",
                "sha256": "ee48570b86fc58180db4a39bd2814dc040a821fef47253d4304f8dcd2b2a64d6"
            },
            "downloads": -1,
            "filename": "cykooz.resizer-2.2.1-cp310-cp310-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "1c81b7f14469c3ed0473c28be4572561",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 667217,
            "upload_time": "2024-02-15T18:44:46",
            "upload_time_iso_8601": "2024-02-15T18:44:46.994004Z",
            "url": "https://files.pythonhosted.org/packages/a9/f1/9975a158b247c17cf2047efc4101deb16cd1c4fdc608e3885b617fabfa40/cykooz.resizer-2.2.1-cp310-cp310-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7f153f65fabd970e2d08c7b2dcd9d449c94a5ff94107ce830caef55859a39aa6",
                "md5": "aae40327d1dfed34262186e8764f2099",
                "sha256": "2e7da4d38c696cf60662322c665852eadfaf987a6c06a13458a29e331c3198bf"
            },
            "downloads": -1,
            "filename": "cykooz.resizer-2.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "aae40327d1dfed34262186e8764f2099",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 672769,
            "upload_time": "2024-02-15T18:44:49",
            "upload_time_iso_8601": "2024-02-15T18:44:49.796160Z",
            "url": "https://files.pythonhosted.org/packages/7f/15/3f65fabd970e2d08c7b2dcd9d449c94a5ff94107ce830caef55859a39aa6/cykooz.resizer-2.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8cfd16e16bd5564e39781c65315ca698e433249127b291a21d57608aec1e6c92",
                "md5": "0df134f1082d51606191e4959fe09380",
                "sha256": "5b5ed6eafcce0e43505b1dab26b2152cbbf52db323a159b9f5f4a5fb503f780c"
            },
            "downloads": -1,
            "filename": "cykooz.resizer-2.2.1-cp310-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "0df134f1082d51606191e4959fe09380",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 610668,
            "upload_time": "2024-02-15T18:44:52",
            "upload_time_iso_8601": "2024-02-15T18:44:52.424116Z",
            "url": "https://files.pythonhosted.org/packages/8c/fd/16e16bd5564e39781c65315ca698e433249127b291a21d57608aec1e6c92/cykooz.resizer-2.2.1-cp310-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d3405b9bd3c54f4a9b3788243b86a0fcb2b23636a03c24799a13adb9e64d1451",
                "md5": "aa802dd506373076ebe1e5403b5f4608",
                "sha256": "95a7fac2beeab7d489cf458579e9b93d39113026855153e71fc6e854f6fd422d"
            },
            "downloads": -1,
            "filename": "cykooz.resizer-2.2.1-cp311-cp311-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "aa802dd506373076ebe1e5403b5f4608",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 667205,
            "upload_time": "2024-02-15T18:44:54",
            "upload_time_iso_8601": "2024-02-15T18:44:54.360013Z",
            "url": "https://files.pythonhosted.org/packages/d3/40/5b9bd3c54f4a9b3788243b86a0fcb2b23636a03c24799a13adb9e64d1451/cykooz.resizer-2.2.1-cp311-cp311-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "174f4679a439696f2995af2b215dead6c9b5d76c4f56519a50449b3652da08e2",
                "md5": "efcb2f0adcf8aad17b4189004a22e5dc",
                "sha256": "2c0cdf71f93229f77e9439c0a1bafc64a980f86fb433a0781671a95f10304e4f"
            },
            "downloads": -1,
            "filename": "cykooz.resizer-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "efcb2f0adcf8aad17b4189004a22e5dc",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 672817,
            "upload_time": "2024-02-15T18:44:57",
            "upload_time_iso_8601": "2024-02-15T18:44:57.039279Z",
            "url": "https://files.pythonhosted.org/packages/17/4f/4679a439696f2995af2b215dead6c9b5d76c4f56519a50449b3652da08e2/cykooz.resizer-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "821a0aa542bc56194337130b928a05a6855369eab024369e69a343fd9ab7ffd9",
                "md5": "65457bfaf3b92644910952c40411b301",
                "sha256": "b4e4686287075568253ffad2634c613efc00c6b5315c79865b5920194d7d106a"
            },
            "downloads": -1,
            "filename": "cykooz.resizer-2.2.1-cp311-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "65457bfaf3b92644910952c40411b301",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 610660,
            "upload_time": "2024-02-15T18:44:58",
            "upload_time_iso_8601": "2024-02-15T18:44:58.805900Z",
            "url": "https://files.pythonhosted.org/packages/82/1a/0aa542bc56194337130b928a05a6855369eab024369e69a343fd9ab7ffd9/cykooz.resizer-2.2.1-cp311-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0164c89c84c6812efca5b3cdfd62d135f698da3d3312be17563779657c16e5e2",
                "md5": "0ee3dd7373b173e36d44ca7cc1d6a7fd",
                "sha256": "6a1b714f54f83997f57e427607a496afa0cf2274c4af7a2bdca707ed9aa557b4"
            },
            "downloads": -1,
            "filename": "cykooz.resizer-2.2.1-cp312-cp312-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "0ee3dd7373b173e36d44ca7cc1d6a7fd",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7",
            "size": 666495,
            "upload_time": "2024-02-15T18:45:01",
            "upload_time_iso_8601": "2024-02-15T18:45:01.287545Z",
            "url": "https://files.pythonhosted.org/packages/01/64/c89c84c6812efca5b3cdfd62d135f698da3d3312be17563779657c16e5e2/cykooz.resizer-2.2.1-cp312-cp312-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "28659c0bd2d4dddee8887f5f00abd4e8e4ae6b9782ba54ade9845be4d12e00af",
                "md5": "e8a905229592bd986779ec388a7f9c62",
                "sha256": "5b752d118c66b9460e9826add7f1063bb3cf9561ffa96e1a87f5deb24b4e6301"
            },
            "downloads": -1,
            "filename": "cykooz.resizer-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "e8a905229592bd986779ec388a7f9c62",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7",
            "size": 672511,
            "upload_time": "2024-02-15T18:45:03",
            "upload_time_iso_8601": "2024-02-15T18:45:03.867975Z",
            "url": "https://files.pythonhosted.org/packages/28/65/9c0bd2d4dddee8887f5f00abd4e8e4ae6b9782ba54ade9845be4d12e00af/cykooz.resizer-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "613d2259b022782451cd49b10344784e4ba3fd43e58bb453fcdc661f589273dc",
                "md5": "3b903782a9588b69ca98501a4557559d",
                "sha256": "fb58cfa72c91a967ecbaf13e41db1bc185b8df0b799743687fed2b73a82d94a8"
            },
            "downloads": -1,
            "filename": "cykooz.resizer-2.2.1-cp312-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "3b903782a9588b69ca98501a4557559d",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7",
            "size": 611334,
            "upload_time": "2024-02-15T18:45:06",
            "upload_time_iso_8601": "2024-02-15T18:45:06.253361Z",
            "url": "https://files.pythonhosted.org/packages/61/3d/2259b022782451cd49b10344784e4ba3fd43e58bb453fcdc661f589273dc/cykooz.resizer-2.2.1-cp312-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "af19f7e5533065ed42f8f29df0cb0fe8ae4cea9d045a6c2f74a0e850edf7de31",
                "md5": "d7e32aae43d14713a94620bb35cca38c",
                "sha256": "97b0cf6c492be80d020959ed6f9e867b3731c4dfe316fa89b9e02f0cf071933e"
            },
            "downloads": -1,
            "filename": "cykooz.resizer-2.2.1-cp37-cp37m-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "d7e32aae43d14713a94620bb35cca38c",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 667661,
            "upload_time": "2024-02-15T18:45:09",
            "upload_time_iso_8601": "2024-02-15T18:45:09.494812Z",
            "url": "https://files.pythonhosted.org/packages/af/19/f7e5533065ed42f8f29df0cb0fe8ae4cea9d045a6c2f74a0e850edf7de31/cykooz.resizer-2.2.1-cp37-cp37m-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3cd0d73ea051824602ff7fd30e2be5e4c9a4bc664246541575d478367b107de6",
                "md5": "0e3aab929ee4ba61fe3a92023a99e11b",
                "sha256": "8e22116c92b8366b0b4a475c9852172467dc41cc9eae1f5cf65aad95b0c8e501"
            },
            "downloads": -1,
            "filename": "cykooz.resizer-2.2.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "0e3aab929ee4ba61fe3a92023a99e11b",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 673351,
            "upload_time": "2024-02-15T18:45:11",
            "upload_time_iso_8601": "2024-02-15T18:45:11.534255Z",
            "url": "https://files.pythonhosted.org/packages/3c/d0/d73ea051824602ff7fd30e2be5e4c9a4bc664246541575d478367b107de6/cykooz.resizer-2.2.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9ccbdba9918960aea7ec9de25c04407a4455b4f601369f5400240f0f8c83a259",
                "md5": "aa64f3b2fc5c5e897ea0f45db1a835df",
                "sha256": "341b8e6fc0c62a79b6bfa923af9738356ecf190f9d5f0ce3c65829220e5e2b98"
            },
            "downloads": -1,
            "filename": "cykooz.resizer-2.2.1-cp37-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "aa64f3b2fc5c5e897ea0f45db1a835df",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 611067,
            "upload_time": "2024-02-15T18:45:14",
            "upload_time_iso_8601": "2024-02-15T18:45:14.319892Z",
            "url": "https://files.pythonhosted.org/packages/9c/cb/dba9918960aea7ec9de25c04407a4455b4f601369f5400240f0f8c83a259/cykooz.resizer-2.2.1-cp37-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "dd22513f69e161f5111b78d34b774b8e54b65a6d452ef4853ac94b876c503259",
                "md5": "baede29d74214c1ea5c5f16bfdc8d601",
                "sha256": "07f8cfb7e6d01ab377a3388fac088beed6e916be1d1d92297345d76361eea004"
            },
            "downloads": -1,
            "filename": "cykooz.resizer-2.2.1-cp38-cp38-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "baede29d74214c1ea5c5f16bfdc8d601",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 667580,
            "upload_time": "2024-02-15T18:45:16",
            "upload_time_iso_8601": "2024-02-15T18:45:16.991964Z",
            "url": "https://files.pythonhosted.org/packages/dd/22/513f69e161f5111b78d34b774b8e54b65a6d452ef4853ac94b876c503259/cykooz.resizer-2.2.1-cp38-cp38-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a6f40badb75ab8f0f2d38412c1786b0347dfb75eba2d255b6c134724972d582f",
                "md5": "266b6a157298b1c2253d919fe7c1cbe0",
                "sha256": "fc3dd3bba97567ec456c148ea1d8a60b2b5562e8249efe493b3ad049ad2d9e53"
            },
            "downloads": -1,
            "filename": "cykooz.resizer-2.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "266b6a157298b1c2253d919fe7c1cbe0",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 673335,
            "upload_time": "2024-02-15T18:45:19",
            "upload_time_iso_8601": "2024-02-15T18:45:19.214754Z",
            "url": "https://files.pythonhosted.org/packages/a6/f4/0badb75ab8f0f2d38412c1786b0347dfb75eba2d255b6c134724972d582f/cykooz.resizer-2.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "46697b616b288ddf5e29fc5987989d5389623c53b1dffee5d2ab6f6be6a956fa",
                "md5": "5f6df7ebf9928ecee7bd001075210114",
                "sha256": "964ae3bed1d9d71b963db1dc7384f63f07cd7d69ca7de62ba6d2b996573702d9"
            },
            "downloads": -1,
            "filename": "cykooz.resizer-2.2.1-cp38-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "5f6df7ebf9928ecee7bd001075210114",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 611072,
            "upload_time": "2024-02-15T18:45:20",
            "upload_time_iso_8601": "2024-02-15T18:45:20.813956Z",
            "url": "https://files.pythonhosted.org/packages/46/69/7b616b288ddf5e29fc5987989d5389623c53b1dffee5d2ab6f6be6a956fa/cykooz.resizer-2.2.1-cp38-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9176978e2ee9a6322d34991a9f7a8c6ecb3b6ac71d23eeac17dcbc3fdaacfae8",
                "md5": "14933dab40fe7993920aa5e882b114af",
                "sha256": "1034636e59d44c87d1045c2e86ea07ddf194cf05fc32bdd7b99c6c87ae7e6650"
            },
            "downloads": -1,
            "filename": "cykooz.resizer-2.2.1-cp39-cp39-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "14933dab40fe7993920aa5e882b114af",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 667369,
            "upload_time": "2024-02-15T18:45:23",
            "upload_time_iso_8601": "2024-02-15T18:45:23.031691Z",
            "url": "https://files.pythonhosted.org/packages/91/76/978e2ee9a6322d34991a9f7a8c6ecb3b6ac71d23eeac17dcbc3fdaacfae8/cykooz.resizer-2.2.1-cp39-cp39-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8773dbd10b771418657baeb1cc4090f975dd8c925b1f713b6c661279afa7fb5e",
                "md5": "06aa733993c1feadfb671b20b6e857be",
                "sha256": "554ca21700d938bcbec5b379afe5c7b0f2aeb8d89562e8a3898e0b4a65097b3d"
            },
            "downloads": -1,
            "filename": "cykooz.resizer-2.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "06aa733993c1feadfb671b20b6e857be",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 673163,
            "upload_time": "2024-02-15T18:45:25",
            "upload_time_iso_8601": "2024-02-15T18:45:25.064260Z",
            "url": "https://files.pythonhosted.org/packages/87/73/dbd10b771418657baeb1cc4090f975dd8c925b1f713b6c661279afa7fb5e/cykooz.resizer-2.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "92df18859cc8ead936a468208dd82ca3056f4bc7383b8439265e0a1e0737cf1a",
                "md5": "5ec7d724e569c41bbebcebdc95ed0d7d",
                "sha256": "bbd09497aa07d2cf9ae410a20f1d9939c9845be65b56f29aa6069815aef962be"
            },
            "downloads": -1,
            "filename": "cykooz.resizer-2.2.1-cp39-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "5ec7d724e569c41bbebcebdc95ed0d7d",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 610889,
            "upload_time": "2024-02-15T18:45:27",
            "upload_time_iso_8601": "2024-02-15T18:45:27.187957Z",
            "url": "https://files.pythonhosted.org/packages/92/df/18859cc8ead936a468208dd82ca3056f4bc7383b8439265e0a1e0737cf1a/cykooz.resizer-2.2.1-cp39-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a26e72a817190daae9d4bab1b3fd265bddcfd7c9d4b7ea1d33309c331c967a82",
                "md5": "09fcba74eb4e415ecf7d1cbaae923354",
                "sha256": "bfe45dd054bf402700880b19532c049f286bba79881c6131bc04187b18a14aa0"
            },
            "downloads": -1,
            "filename": "cykooz.resizer-2.2.1.tar.gz",
            "has_sig": false,
            "md5_digest": "09fcba74eb4e415ecf7d1cbaae923354",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 13445575,
            "upload_time": "2024-02-15T18:45:30",
            "upload_time_iso_8601": "2024-02-15T18:45:30.716046Z",
            "url": "https://files.pythonhosted.org/packages/a2/6e/72a817190daae9d4bab1b3fd265bddcfd7c9d4b7ea1d33309c331c967a82/cykooz.resizer-2.2.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-02-15 18:45:30",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "cykooz.resizer"
}
        
Elapsed time: 0.21670s