# 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
- gaussian
- 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, 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 raw image with an alpha channel
```python
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
```python
from cykooz.resizer import Resizer, CpuExtensions
resizer = Resizer()
resizer.cpu_extensions = CpuExtensions.sse4_1
...
```
## Benchmarks
Environment:
- CPU: AMD Ryzen 9 5950X
- RAM: DDR4 4000 MHz
- Ubuntu 22.04 (linux 6.5.0)
- Python 3.10
- Rust 1.78.0
- cykooz.resizer = "3.0"
Other Python libraries used to compare of resizing speed:
- Pillow = "10.3.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.93 | 104.77 | 191.08 |
| cykooz.resizer | 0.20 | 28.50 | 56.33 |
| cykooz.resizer - sse4_1 | 0.20 | 12.28 | 24.31 |
| cykooz.resizer - avx2 | 0.20 | 8.58 | 21.62 |
### 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 | 0.25 | 20.62 | 51.62 |
| cykooz.resizer | 0.18 | 6.25 | 13.06 |
| cykooz.resizer - sse4_1 | 0.18 | 2.12 | 5.75 |
| cykooz.resizer - avx2 | 0.18 | 1.96 | 4.41 |
Raw data
{
"_id": null,
"home_page": null,
"name": "cykooz.resizer",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "image, resize, simd",
"author": "Kirill Kuzminykh <cykooz@gmail.com>",
"author_email": "Kirill Kuzminykh <cykooz@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/35/a5/7be3a7b8d98aa0358b4def1eb67e58afe6ddf260e11f364478e60cb6f6a0/cykooz.resizer-3.0.0.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\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 - gaussian\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## Usage Examples\n\n### Resize Pillow's image\n\n```python\nfrom PIL import Image\n\nfrom cykooz.resizer import FilterType, ResizeAlg, Resizer, ResizeOptions\n\n\nresizer = Resizer()\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# Resize using a bilinear filter and ignoring an alpha channel.\nimage = Image.open('nasa-4928x3279.png')\nresizer.resize_pil(\n image,\n dst_image,\n ResizeOptions(\n resize_alg=ResizeAlg.convolution(FilterType.bilinear),\n use_alpha=False,\n )\n)\n```\n\n### Resize raw image with an alpha channel\n\n```python\nfrom cykooz.resizer import ImageData, PixelType, Resizer\n\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 resizer = Resizer()\n dst_image = ImageData(255, 170, PixelType.U8x4)\n # By default, Resizer multiplies and divides by alpha channel\n # images with `U8x2`, `U8x4`, `U16x2` and `U16x4` pixels.\n resizer.resize(src_image, dst_image)\n return dst_image\n```\n\n### Change used CPU-extensions\n\n```python\nfrom cykooz.resizer import Resizer, CpuExtensions\n\n\nresizer = Resizer()\nresizer.cpu_extensions = CpuExtensions.sse4_1\n...\n```\n\n## Benchmarks\n\nEnvironment:\n\n- CPU: AMD Ryzen 9 5950X\n- RAM: DDR4 4000 MHz\n- Ubuntu 22.04 (linux 6.5.0)\n- Python 3.10\n- Rust 1.78.0\n- cykooz.resizer = \"3.0\"\n\nOther Python libraries used to compare of resizing speed:\n\n- Pillow = \"10.3.0\" (https://pypi.org/project/Pillow/)\n\nResize algorithms:\n\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.93 | 104.77 | 191.08 |\n| cykooz.resizer | 0.20 | 28.50 | 56.33 |\n| cykooz.resizer - sse4_1 | 0.20 | 12.28 | 24.31 |\n| cykooz.resizer - avx2 | 0.20 | 8.58 | 21.62 |\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 | 0.25 | 20.62 | 51.62 |\n| cykooz.resizer | 0.18 | 6.25 | 13.06 |\n| cykooz.resizer - sse4_1 | 0.18 | 2.12 | 5.75 |\n| cykooz.resizer - avx2 | 0.18 | 1.96 | 4.41 |\n\n",
"bugtrack_url": null,
"license": null,
"summary": "A fast image resizer",
"version": "3.0.0",
"project_urls": {
"Homepage": "https://github.com/Cykooz/cykooz.resizer",
"Repository": "https://github.com/Cykooz/cykooz.resizer.git"
},
"split_keywords": [
"image",
" resize",
" simd"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "747de3494e57685dfc21ba30741b6e5de4a7ccd1e173bdc72ec183cb67f1f4db",
"md5": "f96bd4aeaeac3490bf606f149f426dc2",
"sha256": "8a53bf7ac938a9d3296f1c2c3c94c37d720a41889a9a16c33ffd7bc260706f4f"
},
"downloads": -1,
"filename": "cykooz.resizer-3.0.0-cp310-cp310-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "f96bd4aeaeac3490bf606f149f426dc2",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 1133097,
"upload_time": "2024-05-15T18:13:23",
"upload_time_iso_8601": "2024-05-15T18:13:23.457306Z",
"url": "https://files.pythonhosted.org/packages/74/7d/e3494e57685dfc21ba30741b6e5de4a7ccd1e173bdc72ec183cb67f1f4db/cykooz.resizer-3.0.0-cp310-cp310-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8c8f29fa2c3f4f398c318fa33b07d32a50a84251bc799865294a4baaf7593f9c",
"md5": "72736cf4d77c6757a06cc85a75104736",
"sha256": "8c62903c669f423b8c14122aa806f6a6df08ae137283e79caa346de9119bead1"
},
"downloads": -1,
"filename": "cykooz.resizer-3.0.0-cp310-cp310-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "72736cf4d77c6757a06cc85a75104736",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 954911,
"upload_time": "2024-05-15T18:13:25",
"upload_time_iso_8601": "2024-05-15T18:13:25.606938Z",
"url": "https://files.pythonhosted.org/packages/8c/8f/29fa2c3f4f398c318fa33b07d32a50a84251bc799865294a4baaf7593f9c/cykooz.resizer-3.0.0-cp310-cp310-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7e9f929b8485619c464c38a265c54675af85a227b5aaa31a9750e564adc0f730",
"md5": "ee7cfddccea13fe7c51b1ecced190fa6",
"sha256": "a4fb26db959977a9d2a3f6c41d31dfb69c0dbc248c7713ded55ae388d1de0422"
},
"downloads": -1,
"filename": "cykooz.resizer-3.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "ee7cfddccea13fe7c51b1ecced190fa6",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 1165991,
"upload_time": "2024-05-15T18:13:28",
"upload_time_iso_8601": "2024-05-15T18:13:28.229067Z",
"url": "https://files.pythonhosted.org/packages/7e/9f/929b8485619c464c38a265c54675af85a227b5aaa31a9750e564adc0f730/cykooz.resizer-3.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "fe74406a0165a7c3dc7b7c6880386e177f6a7e037bc4e3015d8d20f58bd105b8",
"md5": "0f9c8863b3b0bdbe9d7c962b51f81048",
"sha256": "a6a1a0bba93389311184d09d8b230db8bb936dc7a71f499795c7eab2a9a540f5"
},
"downloads": -1,
"filename": "cykooz.resizer-3.0.0-cp310-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "0f9c8863b3b0bdbe9d7c962b51f81048",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 1143939,
"upload_time": "2024-05-15T18:13:30",
"upload_time_iso_8601": "2024-05-15T18:13:30.815545Z",
"url": "https://files.pythonhosted.org/packages/fe/74/406a0165a7c3dc7b7c6880386e177f6a7e037bc4e3015d8d20f58bd105b8/cykooz.resizer-3.0.0-cp310-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b94f5625dd475d4173cf2ccac46d64ccce7021a2788ccd4155daca845281f724",
"md5": "bd22be7b57372ccd4e3f92a6da7fa430",
"sha256": "363744312db63bf81dfe130047dfa64f270380e2d52ecd6ea4abf520c0933e25"
},
"downloads": -1,
"filename": "cykooz.resizer-3.0.0-cp311-cp311-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "bd22be7b57372ccd4e3f92a6da7fa430",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 1133124,
"upload_time": "2024-05-15T18:13:32",
"upload_time_iso_8601": "2024-05-15T18:13:32.589931Z",
"url": "https://files.pythonhosted.org/packages/b9/4f/5625dd475d4173cf2ccac46d64ccce7021a2788ccd4155daca845281f724/cykooz.resizer-3.0.0-cp311-cp311-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "63e6e6bfce91fb66277b77596a1f84f01f384b3097b2c6a44add36de38841f9b",
"md5": "328f66662af7a4ca1bffa6cb98b45e22",
"sha256": "cc566e81a1938cd4e27fb903416804e4d03a0cc0cf9935acb973bb97fbd7880b"
},
"downloads": -1,
"filename": "cykooz.resizer-3.0.0-cp311-cp311-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "328f66662af7a4ca1bffa6cb98b45e22",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 954953,
"upload_time": "2024-05-15T18:13:34",
"upload_time_iso_8601": "2024-05-15T18:13:34.960714Z",
"url": "https://files.pythonhosted.org/packages/63/e6/e6bfce91fb66277b77596a1f84f01f384b3097b2c6a44add36de38841f9b/cykooz.resizer-3.0.0-cp311-cp311-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2b054c3c5c9da1fc8fd2b587920d59bd08b83ad577e2be3715c0bb9d6b08a980",
"md5": "30da4d10aa1bbcde66795aa9ac33089a",
"sha256": "67d71e34ac9c0ec0302ee32dbfeca898005d46a6963666a8241eac6a25944a53"
},
"downloads": -1,
"filename": "cykooz.resizer-3.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "30da4d10aa1bbcde66795aa9ac33089a",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 1166079,
"upload_time": "2024-05-15T18:13:36",
"upload_time_iso_8601": "2024-05-15T18:13:36.903538Z",
"url": "https://files.pythonhosted.org/packages/2b/05/4c3c5c9da1fc8fd2b587920d59bd08b83ad577e2be3715c0bb9d6b08a980/cykooz.resizer-3.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f1a058d393e0fe2d4a263936ed333666cf3bd0bc91b893e6e18c23811441a993",
"md5": "12b1fbd877143728e9fe515a69807b64",
"sha256": "d2ad05c71451a93275a130542a29cce0dd0f797e8c8e44427df69819d6f59a64"
},
"downloads": -1,
"filename": "cykooz.resizer-3.0.0-cp311-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "12b1fbd877143728e9fe515a69807b64",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 1143914,
"upload_time": "2024-05-15T18:13:39",
"upload_time_iso_8601": "2024-05-15T18:13:39.391037Z",
"url": "https://files.pythonhosted.org/packages/f1/a0/58d393e0fe2d4a263936ed333666cf3bd0bc91b893e6e18c23811441a993/cykooz.resizer-3.0.0-cp311-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "257dcb103007da80d9f8bb0619533a5b8eb06ffcced0d762966a69184d5e04e7",
"md5": "a4d2f9da2ea86d8f03752574c803616f",
"sha256": "69b1e0690d2d14363ccb5143894d7d816c10bab9791805086b874111a47ae2e3"
},
"downloads": -1,
"filename": "cykooz.resizer-3.0.0-cp312-cp312-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "a4d2f9da2ea86d8f03752574c803616f",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 1131365,
"upload_time": "2024-05-15T18:13:41",
"upload_time_iso_8601": "2024-05-15T18:13:41.323876Z",
"url": "https://files.pythonhosted.org/packages/25/7d/cb103007da80d9f8bb0619533a5b8eb06ffcced0d762966a69184d5e04e7/cykooz.resizer-3.0.0-cp312-cp312-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3f21cb1bfc587f426cd16fe49d8678f42a41f9f0aee241bfb76511aec70a2304",
"md5": "2e6f123020dbee3fa84abeb048a21212",
"sha256": "58d3f9de7f84301358957a0e7039a9ca74d35e93c9f2299d929581c466d8f310"
},
"downloads": -1,
"filename": "cykooz.resizer-3.0.0-cp312-cp312-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "2e6f123020dbee3fa84abeb048a21212",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 953442,
"upload_time": "2024-05-15T18:13:42",
"upload_time_iso_8601": "2024-05-15T18:13:42.915027Z",
"url": "https://files.pythonhosted.org/packages/3f/21/cb1bfc587f426cd16fe49d8678f42a41f9f0aee241bfb76511aec70a2304/cykooz.resizer-3.0.0-cp312-cp312-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "569e1e312b9314c93bf33039038011d855ef880c4d9bc6885fa0439d7b798c4d",
"md5": "75a794dd67d09cf07dd171fcd0fa9c62",
"sha256": "1d71664efa2e8ab1089c77936ade89e6f9fc157d243011dd079b7c0f8a92c127"
},
"downloads": -1,
"filename": "cykooz.resizer-3.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "75a794dd67d09cf07dd171fcd0fa9c62",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 1165191,
"upload_time": "2024-05-15T18:13:45",
"upload_time_iso_8601": "2024-05-15T18:13:45.522947Z",
"url": "https://files.pythonhosted.org/packages/56/9e/1e312b9314c93bf33039038011d855ef880c4d9bc6885fa0439d7b798c4d/cykooz.resizer-3.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c5ab3edc56876bc2feaea4b563140cf40c5011f39050463e1bb5de88401166ab",
"md5": "4865b799a7091804b009d3d651b26d28",
"sha256": "838fe65aad9cc14d08eb4b661ef8889e45c0ae2a6663e15bc12760249a520059"
},
"downloads": -1,
"filename": "cykooz.resizer-3.0.0-cp312-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "4865b799a7091804b009d3d651b26d28",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 1144730,
"upload_time": "2024-05-15T18:13:47",
"upload_time_iso_8601": "2024-05-15T18:13:47.464927Z",
"url": "https://files.pythonhosted.org/packages/c5/ab/3edc56876bc2feaea4b563140cf40c5011f39050463e1bb5de88401166ab/cykooz.resizer-3.0.0-cp312-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ebfaad207f19451091573bb537c5e7fa8d352e571a8a3b11d5bbeff3c16d9309",
"md5": "1415b0838dc8434ee7fc44e1268a7bf6",
"sha256": "d46d3a861280c12fbdddb20ac7e26e33c7aaeb3354954e0bdcba1b259bcf5d55"
},
"downloads": -1,
"filename": "cykooz.resizer-3.0.0-cp38-cp38-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "1415b0838dc8434ee7fc44e1268a7bf6",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 1133974,
"upload_time": "2024-05-15T18:13:49",
"upload_time_iso_8601": "2024-05-15T18:13:49.428577Z",
"url": "https://files.pythonhosted.org/packages/eb/fa/ad207f19451091573bb537c5e7fa8d352e571a8a3b11d5bbeff3c16d9309/cykooz.resizer-3.0.0-cp38-cp38-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ee127831fef6cca7e9482ac5abd5240aebf66226ff386fc6dde1deb94030cfc1",
"md5": "507e5abb6517c7fafc066ae4b838437e",
"sha256": "21fa199ba8a4a79f2634d857755deaf744985636e5624c784ec7f16d39f1c309"
},
"downloads": -1,
"filename": "cykooz.resizer-3.0.0-cp38-cp38-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "507e5abb6517c7fafc066ae4b838437e",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 955587,
"upload_time": "2024-05-15T18:13:51",
"upload_time_iso_8601": "2024-05-15T18:13:51.321702Z",
"url": "https://files.pythonhosted.org/packages/ee/12/7831fef6cca7e9482ac5abd5240aebf66226ff386fc6dde1deb94030cfc1/cykooz.resizer-3.0.0-cp38-cp38-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "56456a1f8e1521082f9d1e0fd0d9ecb1cf38a08c1d4ce95e2abad412eddf1d29",
"md5": "129ffbb9bc91eef0190210c348406f27",
"sha256": "361020f6e82841e2d088d69fc9a367ff52ff9d19478439fdff17ab7a4d456ba4"
},
"downloads": -1,
"filename": "cykooz.resizer-3.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "129ffbb9bc91eef0190210c348406f27",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 1166531,
"upload_time": "2024-05-15T18:13:53",
"upload_time_iso_8601": "2024-05-15T18:13:53.999624Z",
"url": "https://files.pythonhosted.org/packages/56/45/6a1f8e1521082f9d1e0fd0d9ecb1cf38a08c1d4ce95e2abad412eddf1d29/cykooz.resizer-3.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "5bad09b73d4ba3e597499ef4485bd41d65537754cd8da1dcb7ab5bb76c4348a4",
"md5": "c9661703ded3c71419e8c23806e88651",
"sha256": "6b2c97cc5cb8c173bd0365c212c15c58f28be26ed3dc1d62e25b02b9b4520832"
},
"downloads": -1,
"filename": "cykooz.resizer-3.0.0-cp38-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "c9661703ded3c71419e8c23806e88651",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 1144511,
"upload_time": "2024-05-15T18:13:55",
"upload_time_iso_8601": "2024-05-15T18:13:55.652827Z",
"url": "https://files.pythonhosted.org/packages/5b/ad/09b73d4ba3e597499ef4485bd41d65537754cd8da1dcb7ab5bb76c4348a4/cykooz.resizer-3.0.0-cp38-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "960268f3dfe41e403b3c0071e9b9d5314c13ec1eec90945f6ff39ed6bbd26538",
"md5": "a99b97d95173782d0d253812d9bd3027",
"sha256": "9cbf88d4631523e8c088726704663efd7eada64ac01ab3dc7fa9ab3cd44991c4"
},
"downloads": -1,
"filename": "cykooz.resizer-3.0.0-cp39-cp39-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "a99b97d95173782d0d253812d9bd3027",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 1133664,
"upload_time": "2024-05-15T18:13:58",
"upload_time_iso_8601": "2024-05-15T18:13:58.115597Z",
"url": "https://files.pythonhosted.org/packages/96/02/68f3dfe41e403b3c0071e9b9d5314c13ec1eec90945f6ff39ed6bbd26538/cykooz.resizer-3.0.0-cp39-cp39-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "afe9a92a6f9918f58b1760586442edddca3e9602bc7a1ec8d7f62b653a1dbd9c",
"md5": "d640fb69ae4e6fd4945ad62867171fe1",
"sha256": "10c396115f562eebe1ddcb448137a7e3cb3e28415a773f4b3da87d8a6a8f2009"
},
"downloads": -1,
"filename": "cykooz.resizer-3.0.0-cp39-cp39-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "d640fb69ae4e6fd4945ad62867171fe1",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 955353,
"upload_time": "2024-05-15T18:13:59",
"upload_time_iso_8601": "2024-05-15T18:13:59.752650Z",
"url": "https://files.pythonhosted.org/packages/af/e9/a92a6f9918f58b1760586442edddca3e9602bc7a1ec8d7f62b653a1dbd9c/cykooz.resizer-3.0.0-cp39-cp39-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d890a13b004550b38f7fcf6fc385c028cea2f1d44da9928edc8708dac71c9b31",
"md5": "97dc7baa12ab073e894b43d968e85e6a",
"sha256": "9c3bfa8b73b6cc8453240c9d8c0f2f4b028df7b7fce92958b87fe0ccf3954f8b"
},
"downloads": -1,
"filename": "cykooz.resizer-3.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "97dc7baa12ab073e894b43d968e85e6a",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 1166421,
"upload_time": "2024-05-15T18:14:01",
"upload_time_iso_8601": "2024-05-15T18:14:01.427461Z",
"url": "https://files.pythonhosted.org/packages/d8/90/a13b004550b38f7fcf6fc385c028cea2f1d44da9928edc8708dac71c9b31/cykooz.resizer-3.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "981af00a566a25d675544538b86c4a1621194346b0e22a800ae4e47f2d892cc3",
"md5": "370c66250e754ae7a7b62f6bd75acc1f",
"sha256": "77590d8362148becf506f64639474114d03d9709d016e62e7188a0fee6a8de07"
},
"downloads": -1,
"filename": "cykooz.resizer-3.0.0-cp39-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "370c66250e754ae7a7b62f6bd75acc1f",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 1144404,
"upload_time": "2024-05-15T18:14:03",
"upload_time_iso_8601": "2024-05-15T18:14:03.381731Z",
"url": "https://files.pythonhosted.org/packages/98/1a/f00a566a25d675544538b86c4a1621194346b0e22a800ae4e47f2d892cc3/cykooz.resizer-3.0.0-cp39-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "35a57be3a7b8d98aa0358b4def1eb67e58afe6ddf260e11f364478e60cb6f6a0",
"md5": "95bbd9fc04d0399797b37ea872c4f22c",
"sha256": "d7c46c9ffbf0966efd62bdae05799286190e93b5255eea89bf61a7ca25f5e737"
},
"downloads": -1,
"filename": "cykooz.resizer-3.0.0.tar.gz",
"has_sig": false,
"md5_digest": "95bbd9fc04d0399797b37ea872c4f22c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 22066,
"upload_time": "2024-05-15T18:14:04",
"upload_time_iso_8601": "2024-05-15T18:14:04.765191Z",
"url": "https://files.pythonhosted.org/packages/35/a5/7be3a7b8d98aa0358b4def1eb67e58afe6ddf260e11f364478e60cb6f6a0/cykooz.resizer-3.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-05-15 18:14:04",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Cykooz",
"github_project": "cykooz.resizer",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "cykooz.resizer"
}