Skip to main content

A simpler wrapper around qoi (https://github.com/phoboslab/qoi)

Project description

PyPI version fury.io

QOI

A simple Python wrapper around qoi, the "Quite OK Image" image format. It's

  • Lossless with comparable compression to PNG, but fast! It encodes 10x faster and decodes around 5x faster than PNG in OpenCV or PIL.
  • You can make it lossy with a simple trick, and then you can get similar compression to JPEG but a whole lot faster. (These number vary a lot depending on how "lossy" you make JPEG or QOI). That's cool.

Install

pip install qoi

Example

import numpy as np
import qoi

# Get your image as a numpy array (OpenCV, Pillow, etc. but here we just create a bunch of noise)
rgb = np.random.randint(low=0, high=255, size=(224, 244, 3)).astype(np.uint8)

# Write it:
_ = qoi.write("/tmp/img.qoi", rgb)

# Read it and check it matches (it should, as we're lossless)
rgb_read = qoi.read("/tmp/img.qoi")
assert np.array_equal(rgb, rgb_read)

# Likewise for encode/decode to/from bytes:
bites = qoi.encode(rgb)
rgb_decoded = qoi.decode(bites)
assert np.array_equal(rgb, rgb_decoded)

# Benchmarking
from qoi.benchmark import benchmark
benchmark()  # Check out the arguments if you're interested

Benchmarks

If we consider lossless, then we're generally comparing with PNG. Yup, there are others, but they're not as common. Benchmarks:

Test image Method Format Input (kb) Encode (ms) Encode (kb) Decode (ms) SSIM
all black ('best' case) PIL png 6075.0 37.75 6.0 16.04 1.00
all black ('best' case) opencv png 6075.0 23.82 7.7 17.93 1.00
all black ('best' case) qoi qoi 6075.0 4.13 32.7 2.67 1.00
koi photo PIL png 6075.0 849.07 2821.5 85.46 1.00
koi photo opencv png 6075.0 95.24 3121.5 44.34 1.00
koi photo qoi qoi 6075.0 28.37 3489.0 17.19 1.00
random noise (worst case) PIL png 6075.0 300.37 6084.5 46.30 1.00
random noise (worst case) opencv png 6075.0 63.72 6086.9 14.01 1.00
random noise (worst case) qoi qoi 6075.0 16.16 8096.1 7.67 1.00

So qoi isn't far off PNG in terms of compression, but 4x-20x faster to encode and 1.5x-6x faster to decode.

NB:

  1. There's additional overhead here with PIL images being converted back to an array as the return type, to be consistent. In some sense, this isn't fair, as PIL will be faster if you're dealing with PIL images. On the other hand, if your common use case involves arrays (e.g. for computer vision) then it's reasonable.
  2. Produced with python src/qoi/benchmark.py --implementations=qoi,opencv,pil --formats=png,qoi on an i7-9750H. Not going to the point of optimised OpenCV/PIL (e.g. SIMD, or pillow-simd) as the results are clear enough for this 'normal' scenario. If you want to dig further, go for it! You can easily run these tests yourself.

If we consider lossy compression, again, JPEG is usually what we're comparing with. Normally, it'd be unfair to compare QOI with JPEG as QOI is lossless, however we can do a slight trick to make QOI lossy - downscale the image, then encode it, then upsample it by the same amount after decoding. You can see we've implemented that below with a downscaling to 40% and JPEG quality of 80 (which results in them having the same visual compression i.e. SSIM). So, results (only on koi photo as the rest are less meaningful/fair for lossy):

Test image Method Format Input (kb) Encode (ms) Encode (kb) Decode (ms) SSIM
koi photo PIL jpg @ 80 6075.0 47.67 275.2 24.01 0.94
koi photo opencv jpg @ 80 6075.0 24.03 275.3 19.58 0.94
koi photo qoi qoi 6075.0 23.17 3489.0 12.94 1.00
koi photo qoi-lossy-0.40x0.40 qoi 6075.0 4.38 667.5 2.96 0.94

Here we see that lossless qoi is losing out considerably in compression, as expected for lossy vs lossless. Also, qoi is only 1x-2x faster of encoding, and 1.5x-2x faster for decoding. However, it's important to note that this varies a lot depending on the jpeg quality specified - here it's 80 but the default for OpenCV is actually 95 which is 3x worse compression and a bit slower.

However, that's still lossy vs lossless! If you look at qoi-lossy-0.40x0.40 where we downscale as above, you can see that it can perform really well. The compression ratio is now only 3x that of JPEG (and 5x better than lossless QOI, and also the same as the default OpenCV JPEG encoding at a quality of 95), but it's so fast - 5x-10x faster encoding, and 7x-8x faster decoding.

Anyway, there are definitely use cases where qoi may still make sense over JPEG. Even lossless QOI can be worth it if size isn't an issue, as it's a bit faster. But if you use the "lossy" QOI, you're getting "comparable" (depending on JPEG quality) compression but much faster.

NB:

  1. See above re additional PIL overhead.
  2. Produced with python src/qoi/benchmark.py --images=koi --implementations=qoi,qoi-lossy,opencv,pil --formats=jpg,qoi --qoi-lossy-scale=0.4 --jpeg-quality=0.8 on an i7-9750H. Not going to the point of optimised OpenCV/PIL (e.g. SIMD, or pillow-simd, libjpeg-turbo, different JPEG qualities, etc.) as the results are clear enough for this 'normal' scenario. If you want to dig further, go for it! You can easily run these tests yourself.

Developing

git clone --recursive https://github.com/kodonnell/qoi/
USE_CYTHON=1 pip install -e .[dev]
pytest .

We use cibuildwheel to build all the wheels, which runs in a Github action. If you want to check this succeeds locally, you can try (untested):

cibuildwheel --platform linux .

Finally, when you're happy, submit a PR.

Publishing

When you're on main on your local, git tag vX.X.X then git push origin vX.X.X. This pushes the tag which triggers the full GitHub Action and:

  • Builds source distribution and wheels (for various platforms)
  • Pushes to PyPI
  • Creates a new release with the appropriate artifacts attached.

TODO

  • Make benchmark.py a CLI in setup.py
  • Create a qoi CLI
  • Benchmarks - add real images, and also compare performance with QOI to see overhead of python wrapper.
  • setuptools_scm_git_archive?
  • Code completion?
  • Investigate a simple 'lossy' compression with QOI - halve the image size and compress, and on decode, just upscale. It'll likely be very visually similar, but also much smaller, but should compare with JPEG.

Discussion

Wrap or rewrite?

For now, this is just a simple wrapper. We'll leave the original project to do all the hard work on performance etc., and also maintaining (or not) compatibility or adding new features etc. We make no claims to do any more than that - we're basically just porting that C functionality to (C)Python.

On the name

For now, let's rock with qoi because

  • We're already in python, and the py in pyqoi seems redundant. For what it's worth, 3 < 5.
  • pyqoi seems like a good name for a python-only version of QOI (useful for pypy etc.), which this isn't.
  • qoi is generally new so let's not overthink it for now. We can always rename later if needed.

What's up with ./src?

See here and here. I didn't read all of it, but yeh, import qoi is annoying when there's also a folder called qoi.

USE_CYTHON=1?

See here. Fair point.

Project details


Download files

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

Source Distribution

qoi-0.1.1.tar.gz (3.3 MB view details)

Uploaded Source

Built Distributions

qoi-0.1.1-cp310-cp310-win_amd64.whl (83.6 kB view details)

Uploaded CPython 3.10 Windows x86-64

qoi-0.1.1-cp310-cp310-win32.whl (70.3 kB view details)

Uploaded CPython 3.10 Windows x86

qoi-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (427.5 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

qoi-0.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (415.1 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

qoi-0.1.1-cp310-cp310-macosx_10_9_x86_64.whl (86.4 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

qoi-0.1.1-cp39-cp39-win_amd64.whl (84.9 kB view details)

Uploaded CPython 3.9 Windows x86-64

qoi-0.1.1-cp39-cp39-win32.whl (71.1 kB view details)

Uploaded CPython 3.9 Windows x86

qoi-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (432.8 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

qoi-0.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (421.4 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

qoi-0.1.1-cp39-cp39-macosx_10_9_x86_64.whl (87.0 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

qoi-0.1.1-cp38-cp38-win_amd64.whl (84.8 kB view details)

Uploaded CPython 3.8 Windows x86-64

qoi-0.1.1-cp38-cp38-win32.whl (71.0 kB view details)

Uploaded CPython 3.8 Windows x86

qoi-0.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (435.2 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

qoi-0.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (423.8 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

qoi-0.1.1-cp38-cp38-macosx_10_9_x86_64.whl (84.1 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

qoi-0.1.1-cp37-cp37m-win_amd64.whl (83.5 kB view details)

Uploaded CPython 3.7m Windows x86-64

qoi-0.1.1-cp37-cp37m-win32.whl (69.7 kB view details)

Uploaded CPython 3.7m Windows x86

qoi-0.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (403.5 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

qoi-0.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (393.3 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

qoi-0.1.1-cp37-cp37m-macosx_10_9_x86_64.whl (84.4 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

Details for the file qoi-0.1.1.tar.gz.

File metadata

  • Download URL: qoi-0.1.1.tar.gz
  • Upload date:
  • Size: 3.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for qoi-0.1.1.tar.gz
Algorithm Hash digest
SHA256 ee1ddac549df5e93e4d97390c7de74040fe7a7e805b04a670974e4a5b3024289
MD5 5095098ade22077b327d38d289ad0e15
BLAKE2b-256 cd4bc56455a5aad822700d289f4075271b7ea2029bcb4cdd62e9016d09ebcdd7

See more details on using hashes here.

File details

Details for the file qoi-0.1.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: qoi-0.1.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 83.6 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for qoi-0.1.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 785b80337d3199c9d7caabb5c345cd905085146c58d95b99edfd9fedcb805abb
MD5 9f6654f605eb79b3555b2d275306ce5e
BLAKE2b-256 50e8ed2065fb7c6d4131959b5bc3d505b5031561b6667c4ccbabafba4ba2d2d7

See more details on using hashes here.

File details

Details for the file qoi-0.1.1-cp310-cp310-win32.whl.

File metadata

  • Download URL: qoi-0.1.1-cp310-cp310-win32.whl
  • Upload date:
  • Size: 70.3 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for qoi-0.1.1-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 756fc36058b6d72a77184084a216d60d142b0236fc682b15f72137b5c2c1cd7e
MD5 b3604797543b3f3a33081887114966c9
BLAKE2b-256 8275a193865847aa97ea3e4f9eb79b63cc0b1873c60de62966523d885ba600ab

See more details on using hashes here.

File details

Details for the file qoi-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for qoi-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 334e1c9ceabc6c224a436d6e49c876847ffc9bf44f35c8a4dc152072a3a602f9
MD5 9642c6f90bf190060b30bdec8e5ab8ad
BLAKE2b-256 4ad95556a7d0a79a3269762ac4ce53d086dd6f9d35643b7d362cec68d9b2d7ab

See more details on using hashes here.

File details

Details for the file qoi-0.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for qoi-0.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 85402a5758f3ead2bfbfe73f699022c75546a29fcf84d8c61914872b18cc4ba6
MD5 81633f7bed1834d57d04f29c2eb1619e
BLAKE2b-256 b9070d8ace49a9e16e45c4cf0ade9e93cb934dfe3c985cfc02646497b667d8da

See more details on using hashes here.

File details

Details for the file qoi-0.1.1-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for qoi-0.1.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 917cdfa129c9e468ccd0398323a3c3fe3d1f98b8649159b67936b0b4e6f80f0f
MD5 8c04e8a33a1810667ce31b38877a79aa
BLAKE2b-256 7d31b77277101f6317fae4305e8e3db5df5c65a8095bdf0ec0303a250efce251

See more details on using hashes here.

File details

Details for the file qoi-0.1.1-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: qoi-0.1.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 84.9 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for qoi-0.1.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 98ee8bbde79a4bf0ab66fc0156ecee2fdf25862c29ef6b9443b6bc20eef66a0a
MD5 f91a3544ce434cffb914ec47e81e5eb8
BLAKE2b-256 eed08184c94bda313c0a576d12650de5d44bdaffe89d8dcf23183be54a2b69f3

See more details on using hashes here.

File details

Details for the file qoi-0.1.1-cp39-cp39-win32.whl.

File metadata

  • Download URL: qoi-0.1.1-cp39-cp39-win32.whl
  • Upload date:
  • Size: 71.1 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for qoi-0.1.1-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 b70fd9af2b63695d21f69d56819a968777df018ca432dd5bc6955abfc4d7da75
MD5 492173fa53de506f0673ef1e7ed20845
BLAKE2b-256 8212504d6ff572726933181091fe50a6ca52628560460a2b5e66bbfe5a089b8e

See more details on using hashes here.

File details

Details for the file qoi-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for qoi-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a9c73d028c16599aefe963372ff21ede3460c9feb4ac62b9554414a5b10e9208
MD5 a3fa3422a93c33dad59b9984db0160e7
BLAKE2b-256 823449e20f88d9d840096a336cde8bfc806519573f77f2c2c0ee11eaff2b89d7

See more details on using hashes here.

File details

Details for the file qoi-0.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for qoi-0.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a09ecf237e81459d9d475e22d28f5907964322266e6ff0f33bc337a3cb60744a
MD5 471099f3e6701a188d142ed490bf7c57
BLAKE2b-256 c8075a8f74aa39f5aa794605a0962020f08597ca29a35b37c8d5b8677b0bc14d

See more details on using hashes here.

File details

Details for the file qoi-0.1.1-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for qoi-0.1.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b3dcc438fe5bd01f49e9994b04dc529075964e79a9714c2bb554104e590b7d97
MD5 e07f526637bc994b0dce6f60c4d69a3d
BLAKE2b-256 71df5f3fc28dfff7c3d157e2e92d70136d4cf9abd9f6bdca219382aa763838c0

See more details on using hashes here.

File details

Details for the file qoi-0.1.1-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: qoi-0.1.1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 84.8 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for qoi-0.1.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 58108b5a34b921a00bde6b3875fd631d06024d109962cc0d11fd7d5ff1a86715
MD5 62f698e11a87b73ad70d739b3959f40c
BLAKE2b-256 96dd4a050bcefc901a1e2673d6ee385e1c8d8f2eaf3ec67447483fbc32d9e7ea

See more details on using hashes here.

File details

Details for the file qoi-0.1.1-cp38-cp38-win32.whl.

File metadata

  • Download URL: qoi-0.1.1-cp38-cp38-win32.whl
  • Upload date:
  • Size: 71.0 kB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for qoi-0.1.1-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 5171cd59ed421f5a9af7148472168a4e17c794bfc03a33d6bc45929d0b401a56
MD5 5f5f462c36959e88427aac55a4b95b67
BLAKE2b-256 844bef0725112d5d2ee4751d3676e20f78742013f1ea0c4aa6c2a063e08fa228

See more details on using hashes here.

File details

Details for the file qoi-0.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for qoi-0.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d58d37a507b3ad78398833b64680c30db102840df547d7cc117ba241e4e5104e
MD5 ae52105fb2b49b3048a91af541b6a9dd
BLAKE2b-256 f99432391a32f97f62a672dc3383cc379562ec9d2a84d4013978e1e9aee7c5b6

See more details on using hashes here.

File details

Details for the file qoi-0.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for qoi-0.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 01e559182b4140602548e025a6d190093a67cf63a7bbaa60cfa91a8540cee504
MD5 9ccf9bc1876b5230f782f765d8ae35b4
BLAKE2b-256 19acb40863951c72c5a922a7039c653b4094702efd70d52dde6b7159c30e039c

See more details on using hashes here.

File details

Details for the file qoi-0.1.1-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for qoi-0.1.1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c201f253645c3a0cb5348eda160a7f076cb12a5a91c1b6564b9e9733c5ad81d3
MD5 f4e75ed6912aa0c69da9a30a9981d48a
BLAKE2b-256 ec65af96a5975b6e443c23a785c1c3e0123909a67a18ea98d4f2f1baaab35e88

See more details on using hashes here.

File details

Details for the file qoi-0.1.1-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: qoi-0.1.1-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 83.5 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for qoi-0.1.1-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 566e935be4c0fa8c3f1475fc9a566adc706294ca933db9b79cf82e7d0b73e15c
MD5 78cb9bd661fe24034a4ea7d4f9d2bfae
BLAKE2b-256 daf5bae0a4eb70cc8ac289927346eaaf3e112cc7ccacd83e334892017ef410df

See more details on using hashes here.

File details

Details for the file qoi-0.1.1-cp37-cp37m-win32.whl.

File metadata

  • Download URL: qoi-0.1.1-cp37-cp37m-win32.whl
  • Upload date:
  • Size: 69.7 kB
  • Tags: CPython 3.7m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for qoi-0.1.1-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 48d7fd586190480ab988c9bf016aa8e6a81f08a132d06bece306a6053380b5e3
MD5 af6a9f56790ce807f8d02d785f681847
BLAKE2b-256 c0a363bb730660be5a2cbafbee92a680985b424c1789a705915a5dc48a2a63e0

See more details on using hashes here.

File details

Details for the file qoi-0.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for qoi-0.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 553c0ddda51b298d81c6ef18e0b63c69525af256e9bd9977a75538980aa660eb
MD5 39e4f4b9bd57d4c900427b26454524e5
BLAKE2b-256 d8b532e172d03f03c8ee5e36e89bc0e790b772874f5e63be995c4d1df15d3fd8

See more details on using hashes here.

File details

Details for the file qoi-0.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for qoi-0.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 9f515e5f5b4150a18473d837b3cf1ed71bba1eb734f0ada3c45095768d2eeeb8
MD5 7763d505f29f575838dc5e7a0ec2522f
BLAKE2b-256 74fc070aee3f289d775eab58207c3d50fb1b70c7ef504604b16f765544f5b266

See more details on using hashes here.

File details

Details for the file qoi-0.1.1-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for qoi-0.1.1-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 756f81f34cfe0518a00f96a9afb679395fcbdaf052a0aac0f55526945372b801
MD5 938d99270a5acc58c8622523319ef6c9
BLAKE2b-256 a79644fd0ad34f3f7fbe5d6162c34675a8d6f68c9ebd525e9d1a155d0a6800f3

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