Skip to main content

CXX Image IO

PyPI - Version Supported Python versions Supported OS Supported Archi License Wheel OS CI Weekly

Introduction

CXX Image IO is a Python project which provides the image IO interfaces, binding with the C++ library: https://github.com/emmcb/cxx-image. These IO interfaces are designed to read and write images in many file formats in generic way and to interact nicely with numpy array.

Image format Read Write EXIF Pixel precision Pixel type File extension Sidecar needed
BMP x x 8 bits Grayscale, RGB, RGBA .bmp
CFA x x 16 bits Bayer .cfa
DNG x x x 16 bits, float Bayer, RGB .dng
JPEG x x x 8 bits Grayscale, RGB .jpg, .jpeg
MIPI RAW x x 10 bits, 12 bits Bayer .RAWMIPI, .RAWMIPI10, .RAWMIPI12 x
PLAIN RAW x x * * .raw .plain16, .nv12, .yuv, * x
PNG x x 8 bits, 16 bits Grayscale, RGB, RGBA .png
TIFF x x x 8 bits, 16 bits, float Bayer, RGB .tif, .tiff

Since version v1.1.2, cxx-image-io supports reading Bayer RAW images from reflex cameras into numpy.array, while also parsing some EXIF information. It is integrated with the C++ library LibRaw https://www.libraw.org/.

The RAW image formats of the following camera manufacturers are supported, user can open these camera raw files by read_image, get image as numpy.array format:

Camera manufacturer Image format
Canon CR2
Nikon NEF
Sony ARW
Panasonic RW2
Kodak DCR
Samsung SRW
Olympus ORF
Leica RAW
Pentax PEF

Getting Started

Prerequisites

This projet currently supports Python from 3.10 to 3.14 on

  • Windows: x86_64
  • Linux: x86_64 and aarch64, glibc v2.28+, musl libc v1.2+
  • MacOS: x86_64 and arm64, v11.0+

Installation

The python package cxx-image-io is to be installed by pip

pip install cxx-image-io

Usage

Image reading basic example

read_image is able to read a image file and return a numpy array and ImageMetadata object.

from cxx_image_io import read_image
from cxx_image_io import ImageMetadata
import numpy as np
from pathlib import Path

image, metadata = read_image(Path('/path/to/image.jpg'))
assert isinstance(image, np.ndarray)

print('Type:', image.dtype)
print('Shape:', image.shape)

image is a numpy array which is suitable for the image processing afterwards.

The print result could be like this:

Type: uint8
Shape: (551, 603, 3)

ImageMetadata is the information about the image, the component fileInfo including the pixel type, pixel precision and image layout, which define fundamentally how the pixels arranged in buffer.

print(metadata.fileInfo)

The print result could be like this:

{'pixelPrecision': 8, 'imageLayout': 'interleaved', 'pixelType': 'rgb'}

metadata.fileInfo shows: image is a 3-dimensional numpy array, where rgb 3 channels interleaved, in each channel, pixel depth is 8 bits.

ImageMetadata has more components than fileInfo, it also includes ExifMetadata, help(ImageMetadata) will show the details.

Read Camera manufacturer RAW image example:

reading camera manufacturer raw image is the same method as we read from .jpg or .tif, just call read_image.

from cxx_image_io import read_image
from cxx_image_io import ImageMetadata
import numpy as np
from pathlib import Path

image, metadata = read_image(Path('test/images/RAW_CANON_EOS_1DX.CR2'))
assert isinstance(image, np.ndarray)

print('Type:', image.dtype)
print('Shape:', image.shape)

print(metadata)

The print result will be like:

Type: uint16
Shape: (3584, 5344)
{
   "fileInfo":{
      "width":5344,
      "height":3584,
      "pixelPrecision":14,
      "imageLayout":"planar",
      "pixelType":"bayer_rggb",
      "pixelRepresentation":"uint16"
   },
   "exifMetadata":{
      "imageWidth":5218,
      "imageHeight":3482,
      "make":"Canon",
      "model":"EOS-1D X",
      "orientation":1,
      "exposureTime":[
         1,
         80
      ],
      "fNumber":[
         56,
         10
      ],
      "isoSpeedRatings":1600,
      "dateTimeOriginal":"2012:09:06 07:48:25",
      "focalLength":[
         700,
         10
      ]
   },
   "shootingParams":{

   },
   "cameraControls":{
      "whiteBalance":[
         1.75390625,
         1.4775390625
      ]
   },
   "calibrationData":{
      "blackLevel":2048,
      "whiteLevel":15438,
      "colorMatrix":[
         [
            1.9404515027999878,
            -1.1166307926177979,
            0.17617927491664886
         ],
         [
            -0.21374493837356567,
            1.6440128087997437,
            -0.430267870426178
         ],
         [
            0.021280933171510696,
            -0.5217925906181335,
            1.500511646270752
         ]
      ]
   },
   "semanticMasks":[

   ],
   "LibRawParams":{
      "rawWidth":5344,
      "rawHeight":3584,
      "rawWidthVisible":5218,
      "rawHeightVisible":3482,
      "topMargin":100,
      "leftMargin":126
   }
}

Note that camera manufacturer RAW image metadata has an additional Parameters: LibRawParams, it contains the coordinates of the original RAW sizes, including the top and left margins, as well as the actual visible area's width and height in the original RAW.

According to these inforamtions, user can corp the visable zone on the RAW image numpy array.

Image reading with sidecar JSON

Some file formats need to know in advance some informations about the image. For example, the PLAIN RAW format is just a simple dump of a buffer into a file, thus it needs to know how to interpret the data.

Bayer Plain Raw 16 bits

image, metadata = read_image(Path('/path/to/image.plain16'))
print('Type:', image.dtype)
print('Shape:', image.shape)
print(metadata.fileInfo)

In this case, user need to have an image sidecar JSON located next to the image file as the same name and path '/path/to/image.json'

{
    "fileInfo": {
        "format": "plain",
        "height": 3072,
        "width": 4080
        "pixelPrecision": 16,
        "pixelType": "bayer_gbrg",
    }
}

After image reading, the information in JSON sidecar is parsed in ImageMetadata object.

The print result of will be like this:

Type: uint16
Shape: (3072, 4080)
{'width': 4080, 'height': 3072, 'pixelPrecision': 16, 'imageLayout': 'planar', 'pixelType': 'bayer_gbrg'}

metadata.fileInfo shows that image is a 2-dimensional numpy array, where pixel is Bayer type, planar layout (not interleaved), pixel depth is 16 bits.

metadata.fileInfo has more attributes to describe the file info, like widthAlignment, heightAlignment, please use help(metadata.fileInfo) to see the details.

Image sidecar is not mandatory, for the other formats which have already image information in their header, like jpg, png, tif, cfa. we don't need to provide image metadata.

Other image reading with sidecar examples

Click to unfold other image format sidecar examples

Packed RAW MIPI 12 bits:

python code

image, metadata = read_image(Path('/path/to/image.RAWMIPI12'))

sidecar json

{
    "fileInfo": {
        "fileFormat": "raw12",
        "height": 3000,
        "width": 4000,
        "pixelPrecision": 12,
        "pixelType": "bayer_gbrg"
    }
}

Packed RAW MIPI 10 bits:

python code

image, metadata = read_image(Path('/path/to/image.RAWMIPI'))

sidecar json

{
    "fileInfo": {
        "height": 3000,
        "width": 4000,
        "format": "raw10",
        "pixelPrecision": 10,
        "pixelType": "bayer_grbg"
    }
}

YUV 420 buffer 8 bits:

python code

image, metadata = read_image(Path('/path/to/image.yuv'))

sidecar json

{
    "fileInfo": {
        "format": "plain",
        "height": 300,
        "width": 400,
        "imageLayout": "yuv_420"
    }
}

NV12 buffer 8 bits:

python code

image, metadata = read_image(Path('/path/to/image.nv12'))

sidecar json

{
    "fileInfo": {
        "format": "plain",
        "height": 300,
        "width": 400,
        "imageLayout": "nv12"
    }
}

Split and merge image channels

After calling read_image, cxx-image-io provides a public API split_image_channels which helps to split to different colors channels, so that user can do the different processes on them. The function return type is a dictionary which contains the different color channel name as keys, and the value in numpy array of one single channel.

before calling write_image, cxx-image-io provides a public API merge_image_channels which helps to merge different colors channels to a numpy array buffer.

from cxx_image_io import read_image, split_image_channels, merge_image_channels, ImageLayout, ImageMetadata, PixelRepresentation, PixelType
import numpy as np
from pathlib import Path

rgb, metadata = read_image(Path('rgb_8bit.jpg'))

channels = split_image_channels(rgb, metadata)

# print(channels['r'])  # Red channel in numpy array
# print(channels['g'])  # Green channel in numpy array
# print(channels['b'])  # Blue channel in numpy array

rgb_post = merge_image_channels(channels, metadata)

np.array_equal(rgb, rgb_post)

cfa, metadata = read_image(Path('bayer_16bit.plain16'))

channels = split_image_channels(cfa, metadata)

# print(channels['gr'])  # Bayer Gr pixels in numpy array
# print(channels['r'])  # Bayer R pixels in numpy array
# print(channels['b'])  # Bayer B pixels in numpy array
# print(channels['gb'])  # Bayer Gb pixels in numpy array

cfa_post = merge_image_channels(channels, metadata)

np.array_equal(cfa, cfa_post)

yuv, metadata = read_image(Path('raw.nv12'))

channels = split_image_channels(yuv, metadata)

# print(channels['y'])  # Y plane in numpy array
# print(channels['u'])  # U plane in numpy array
# print(channels['v'])  # V plane in numpy array

yuv_post = merge_image_channels(channels, metadata)

np.array_equal(yuv, yuv_post)

Image writing

write_image is able to write a numpy array to image file.

To write the pure numpy array to different image file extensions. User need to define the following fundamental parameters in ImageMetadata which is part of ImageWriter.Options. In order to call the specific C++ image libraries with them.

from cxx_image_io import ImageMetadata, ImageWriter, FileFormat, PixelType, ImageLayout
from cxx_image_io import write_image
import numpy as np
from pathlib import Path

metadata = ImageMetadata()
metadata.fileInfo.pixelType = PixelType.RGB
metadata.fileInfo.imageLayout = ImageLayout.INTERLEAVED

write_options = ImageWriter.Options(metadata)

assert isinstance(image, np.ndarray)
write_image(Path('/path/to/image.jpg'), image, write_options)

write_image can determine the image format by file extensions, but some formats don't not rely on a specific extension, for example the PLAIN format that allows to directly dump the image buffer to a file. In this case, the format can be specified through ImageWriter.Options.

metadata = ImageMetadata()
metadata.fileInfo.pixelType = PixelType.BAYER_GBRG
metadata.fileInfo.imageLayout = ImageLayout.PLANAR

write_options = ImageWriter.Options(metadata)
write_options.fileFormat = FileFormat.PLAIN

assert isinstance(image, np.ndarray)
write_image(Path('/path/to/image.plain16'), image, write_options)

Other image writing examples

Click to unfold other image writing examples

Packed RAW MIPI 12 bits:

metadata = ImageMetadata()

metadata.fileInfo.pixelType = PixelType.BAYER_GBRG  # adapt with User's RAW Bayer pattern.
metadata.fileInfo.imageLayout = ImageLayout.PLANAR
metadata.fileInfo.pixelPrecision = 12

write_options = ImageWriter.Options(metadata)

assert isinstance(image, np.ndarray)
write_image(Path('/path/to/image.RAWMIPI12'), image, write_options)

Packed RAW MIPI 10 bits:

metadata = ImageMetadata()

metadata.fileInfo.pixelType = PixelType.BAYER_GBRG # to adapt with User's RAW Bayer pattern.
metadata.fileInfo.imageLayout = ImageLayout.PLANAR
metadata.fileInfo.pixelPrecision = 10

write_options = ImageWriter.Options(metadata)

assert isinstance(image, np.ndarray)
write_image(Path('/path/to/image.RAWMIPI10'), image, write_options)

YUV 420 buffer 8 bits:

metadata = ImageMetadata()

metadata.fileInfo.pixelType = PixelType.YUV
metadata.fileInfo.imageLayout = ImageLayout.YUV_420

write_options = ImageWriter.Options(metadata)
write_options.fileFormat = FileFormat.PLAIN

assert isinstance(image, np.ndarray)
write_image(Path('/path/to/image.yuv'), image, write_options)

NV12 buffer 8 bits:

metadata = ImageMetadata()

metadata.fileInfo.pixelType = PixelType.YUV
metadata.fileInfo.imageLayout = ImageLayout.NV12

write_options = ImageWriter.Options(metadata)
write_options.fileFormat = FileFormat.PLAIN

assert isinstance(image, np.ndarray)
write_image(Path('/path/to/image.nv12'), image, write_options)

Bayer dng 12 bits:

metadata = ImageMetadata()

metadata.fileInfo.pixelType = PixelType.BAYER_RGGB  # adapt with User's RAW Bayer pattern.
metadata.fileInfo.imageLayout = ImageLayout.PLANAR
metadata.fileInfo.pixelPrecision = 12

write_options = ImageWriter.Options(metadata)

assert isinstance(image, np.ndarray)
write_image(Path('/path/to/image.dng'), image, write_options)

RGB 8 bits images (jpg, png, tif, bmp):

metadata = ImageMetadata()

metadata.fileInfo.pixelType = PixelType.RGB
metadata.fileInfo.imageLayout = ImageLayout.INTERLEAVED

write_options = ImageWriter.Options(metadata)

assert isinstance(image, np.ndarray)
write_image(Path('/path/to/image.jpg'), image, write_options)

CFA 16 bits image:

metadata = ImageMetadata()

metadata.fileInfo.pixelType = PixelType.BAYER_RGGB  # adapt with User's RAW Bayer pattern.
metadata.fileInfo.imageLayout = ImageLayout.PLANAR
metadata.fileInfo.pixelPrecision = 16

write_options = ImageWriter.Options(metadata)

assert isinstance(image, np.ndarray)
write_image(Path('/path/to/image.cfa'), image, write_options)

Grayscale 16 bits png image:

metadata = ImageMetadata()

metadata.fileInfo.pixelType = PixelType.GRAYSCALE
metadata.fileInfo.imageLayout = ImageLayout.PLANAR
metadata.fileInfo.pixelPrecision = 16

write_options = ImageWriter.Options(metadata)

assert isinstance(image, np.ndarray)
write_image(Path('/path/to/image.png'), image, write_options)

Bayer 16 bits tif image:

metadata = ImageMetadata()

metadata.fileInfo.pixelType = PixelType.BAYER_RGGB  # adapt with User's RAW Bayer pattern.
metadata.fileInfo.imageLayout = ImageLayout.PLANAR
metadata.fileInfo.pixelPrecision = 16

write_options = ImageWriter.Options(metadata)

assert isinstance(image, np.ndarray)
write_image(Path('/path/to/image.tif'), image, write_options)

EXIF

Some image formats, like JPEG and TIFF, support EXIF reading and writing.

If supported, EXIF can be read by calling read_exif and be written by calling write_exif.

from cxx_image_io import read_exif, write_exif
from pathlib import Path

exif = read_exif(Path('/path/to/image.jpg'))

print(exif)

write_exif(Path('path/to/new_image.jpg'), exif)

print(exif) will give the following output like:

{
  'make': 'Canon',
  'model': 'Canon EOS 40D',
  'orientation': 1,
  'software': 'GIMP 2.4.5',
  'exposureTime': [1, 160],
  'fNumber': [71, 10],
  'isoSpeedRatings': 100,
  'dateTimeOriginal': '2008:05:30 15:56:01',
  'exposureBiasValue': [0, 1],
  'focalLength': [135, 1]
}

user can use help(exif) to see the definition of ExifMetdata.

EXIF metadata can be read and written along with an image by specifying them in the ImageMetadata. In this case, the EXIF wil be read and written when calling read_image and write_image.

image, metadata = read_image(Path('/path/to/image.jpg'))
metadata.exifMetadata.make = 'Custom'
write_options = ImageWriter.Options(metadata)
write_image(Path('/path/to/image.jpg'), image, write_options)

Dependencies

This project has the dependencies of the following libraries by cmake FetchContent:

Statically linked

Dynamically linked

License

This project is licensed under the MIT License - see the LICENSE.md file for details.

Metadata

Release files for cxx-image-io 1.1.7

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

Source distribution (sdist)

Source distribution for cxx-image-io 1.1.7
File Size Uploaded
cxx_image_io-1.1.7.tar.gz 38.5 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for cxx-image-io 1.1.7
File
cxx_image_io-1.1.7-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
cxx_image_io-1.1.7-cp314-cp314-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ x86-64 Details
cxx_image_io-1.1.7-cp314-cp314-musllinux_1_2_aarch64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ ARM64 Details
cxx_image_io-1.1.7-cp314-cp314-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64 Details
cxx_image_io-1.1.7-cp314-cp314-manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ ARM64 Details
cxx_image_io-1.1.7-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
cxx_image_io-1.1.7-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
cxx_image_io-1.1.7-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details
cxx_image_io-1.1.7-cp313-cp313-musllinux_1_2_aarch64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ ARM64 Details
cxx_image_io-1.1.7-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details
cxx_image_io-1.1.7-cp313-cp313-manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ ARM64 Details
cxx_image_io-1.1.7-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
cxx_image_io-1.1.7-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
cxx_image_io-1.1.7-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details
cxx_image_io-1.1.7-cp312-cp312-musllinux_1_2_aarch64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ ARM64 Details
cxx_image_io-1.1.7-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details
cxx_image_io-1.1.7-cp312-cp312-manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ ARM64 Details
cxx_image_io-1.1.7-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
cxx_image_io-1.1.7-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
cxx_image_io-1.1.7-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details
cxx_image_io-1.1.7-cp311-cp311-musllinux_1_2_aarch64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ ARM64 Details
cxx_image_io-1.1.7-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details
cxx_image_io-1.1.7-cp311-cp311-manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ ARM64 Details
cxx_image_io-1.1.7-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
cxx_image_io-1.1.7-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
cxx_image_io-1.1.7-cp310-cp310-musllinux_1_2_x86_64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ x86-64 Details
cxx_image_io-1.1.7-cp310-cp310-musllinux_1_2_aarch64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ ARM64 Details
cxx_image_io-1.1.7-cp310-cp310-manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64 Details
cxx_image_io-1.1.7-cp310-cp310-manylinux_2_28_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ ARM64 Details
cxx_image_io-1.1.7-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details

Total release size: 154.2 MB

Release files / cxx_image_io-1.1.7.tar.gz

Download URL cxx_image_io-1.1.7.tar.gz
Size 38.5 kB
Tags Source
SHA-256 checksum
How to use checksums
581dba8067a1725e7a2b73019a6a250c4ab795c60b8e5d9a97491266f44755eb
BLAKE2b-256 checksum
How to use checksums
865e8a96c7f50651cce258789050e925ac25d6f4197eb5af9ef0f78faaa6c248
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / cxx_image_io-1.1.7-cp314-cp314-win_amd64.whl

Download URL cxx_image_io-1.1.7-cp314-cp314-win_amd64.whl
Size 3.9 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
1cbb73c0c3e78cc6df617ff3fb4b35559f438fe8ba53f63014086439e7c8139c
BLAKE2b-256 checksum
How to use checksums
74703f579ef55d8326bf713df29f3b9bd7f43d36edac479ff396319e097d19a1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / cxx_image_io-1.1.7-cp314-cp314-musllinux_1_2_x86_64.whl

Download URL cxx_image_io-1.1.7-cp314-cp314-musllinux_1_2_x86_64.whl
Size 6.3 MB
Tags CPython 3.14 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
89b87cfa634cd4753ecec45e2fab248c37bee6c0dfadaa645112538ce8d472b8
BLAKE2b-256 checksum
How to use checksums
16044741041b9263d9130e62875b5520c4579a34fb6bf043016b6e7c2fd2c969
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / cxx_image_io-1.1.7-cp314-cp314-musllinux_1_2_aarch64.whl

Download URL cxx_image_io-1.1.7-cp314-cp314-musllinux_1_2_aarch64.whl
Size 6.3 MB
Tags CPython 3.14 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
7d74429b00e87ea234599a75bac614a3973efcbc5b7bc89e818eedbface27a1a
BLAKE2b-256 checksum
How to use checksums
efdbf874e4b36a0d8e02d59fde74184f1d535b8de601836548070e68c68ba69e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / cxx_image_io-1.1.7-cp314-cp314-manylinux_2_28_x86_64.whl

Download URL cxx_image_io-1.1.7-cp314-cp314-manylinux_2_28_x86_64.whl
Size 5.2 MB
Tags CPython 3.14 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
8dbb9c36f9a87f2591dfd59d4acaffca35cb535640a151cd8ce2adef0f0cdbb6
BLAKE2b-256 checksum
How to use checksums
d939b08e58c6eb383fbd6757bacf192f19b1dbf5c2f303104c073b23247bda33
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / cxx_image_io-1.1.7-cp314-cp314-manylinux_2_28_aarch64.whl

Download URL cxx_image_io-1.1.7-cp314-cp314-manylinux_2_28_aarch64.whl
Size 5.3 MB
Tags CPython 3.14 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
890828eafd8431f78c27d89f55e15d8edff32ad1f2b8a7c53f8d037827bf7df5
BLAKE2b-256 checksum
How to use checksums
0e108a7f830d5b4ab4f1a914bdaeaa08eda736e24419fc14fa02411153a4c3b6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / cxx_image_io-1.1.7-cp314-cp314-macosx_11_0_arm64.whl

Download URL cxx_image_io-1.1.7-cp314-cp314-macosx_11_0_arm64.whl
Size 4.0 MB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
1ff985add8de63afde4a97eca0ec5ccfc596e71d2e4da60b47a0fb7809d97182
BLAKE2b-256 checksum
How to use checksums
bc3770a6ccdd28bf4def293795a42f71f87a36eb0453273bb233dc5c54643d6d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / cxx_image_io-1.1.7-cp313-cp313-win_amd64.whl

Download URL cxx_image_io-1.1.7-cp313-cp313-win_amd64.whl
Size 3.7 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
4c91ef61de0bcceae77b9bf64fccc72968d97cdd1285ad92ad81660ff137f3db
BLAKE2b-256 checksum
How to use checksums
1a87a7aefdc86f922aa19e1d453bc5e60425e9e2ebab44be8af25f523531b952
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / cxx_image_io-1.1.7-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL cxx_image_io-1.1.7-cp313-cp313-musllinux_1_2_x86_64.whl
Size 6.3 MB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
c45c7d1846d4f369949c84a9cbd861297947c955ef323650ca100a1998ccf2ad
BLAKE2b-256 checksum
How to use checksums
0c155648adae6b1525de19bbd36f849a9dc056214cd5029e090a933b58d2e137
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / cxx_image_io-1.1.7-cp313-cp313-musllinux_1_2_aarch64.whl

Download URL cxx_image_io-1.1.7-cp313-cp313-musllinux_1_2_aarch64.whl
Size 6.3 MB
Tags CPython 3.13 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
858ad04a4e6b06b6e26431103e3d5c7aee0c97d493b439c8dca946f0983687f7
BLAKE2b-256 checksum
How to use checksums
7479c8086375d8ed6010b4d6f57205508b2a66773805453a19112eef0c380873
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / cxx_image_io-1.1.7-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL cxx_image_io-1.1.7-cp313-cp313-manylinux_2_28_x86_64.whl
Size 5.2 MB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
769ae29608e6e373ddc3407528a0473d052969a19392762e6d2f3aa34f48b9cd
BLAKE2b-256 checksum
How to use checksums
fa43a2e4134514f5d201c52b2099ace95b339eae17324c015ff6c4c7e61e26d0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / cxx_image_io-1.1.7-cp313-cp313-manylinux_2_28_aarch64.whl

Download URL cxx_image_io-1.1.7-cp313-cp313-manylinux_2_28_aarch64.whl
Size 5.2 MB
Tags CPython 3.13 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
a7faa849d6c2fcf0d05e804b50ff6014248bf7e3f5d1118376c5ed69a3636c39
BLAKE2b-256 checksum
How to use checksums
4a8e186d48715acd0bb941ff626206c4a8dd2dfb368b17a0b4c2fd4098ae7e96
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / cxx_image_io-1.1.7-cp313-cp313-macosx_11_0_arm64.whl

Download URL cxx_image_io-1.1.7-cp313-cp313-macosx_11_0_arm64.whl
Size 4.0 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
b3e92c64b35a9b40ab340aeaa82b023398945be67bc6bb9fe5b8e52f67ef6a18
BLAKE2b-256 checksum
How to use checksums
8c490212674ede2778a02b83d151c197123b43a3d7d54bf293ddfacc9e9204b1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / cxx_image_io-1.1.7-cp312-cp312-win_amd64.whl

Download URL cxx_image_io-1.1.7-cp312-cp312-win_amd64.whl
Size 3.7 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
20b1cf6bf4bdf28809f458b6c400ba46b97d4c360dba3e3da63c58deb10f6579
BLAKE2b-256 checksum
How to use checksums
d8dd9188909af26dac1bbc68af0ea0902e75f33b370cdd005852c37bbe48ee4c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / cxx_image_io-1.1.7-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL cxx_image_io-1.1.7-cp312-cp312-musllinux_1_2_x86_64.whl
Size 6.3 MB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
1a05924e073040c81c3bd2b92521006374d44c65173c65b07aca5059f6843b74
BLAKE2b-256 checksum
How to use checksums
4d1f15e22a39535825413489b708feb789fd63dea26a0ca36fa6299aa033ac47
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / cxx_image_io-1.1.7-cp312-cp312-musllinux_1_2_aarch64.whl

Download URL cxx_image_io-1.1.7-cp312-cp312-musllinux_1_2_aarch64.whl
Size 6.3 MB
Tags CPython 3.12 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
da3aff202fbc04a8e30f90b64a51a92feef95e1a4f1fe684cff25c5122da7fe7
BLAKE2b-256 checksum
How to use checksums
16b40bab318e67b3d53e486d855f0bad259a95ff96709a8232769ba1901bd0db
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / cxx_image_io-1.1.7-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL cxx_image_io-1.1.7-cp312-cp312-manylinux_2_28_x86_64.whl
Size 5.2 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
b8748623c1259d5a70d81714f8d514e3a9e6c0bb3c58fb39249236b5837b7e67
BLAKE2b-256 checksum
How to use checksums
e737162928ff555af150cc123af0bf4fb7578b993442f1028b7e1845712e1a89
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / cxx_image_io-1.1.7-cp312-cp312-manylinux_2_28_aarch64.whl

Download URL cxx_image_io-1.1.7-cp312-cp312-manylinux_2_28_aarch64.whl
Size 5.2 MB
Tags CPython 3.12 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
7a259bd59e83b80e8885c64098ef8b41ef8441764ec3811ba5da08c3be1be86f
BLAKE2b-256 checksum
How to use checksums
a56d7973fca932f80a7271298d932ebd30abab3f2abb4ec8960e21c9492e3dfb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / cxx_image_io-1.1.7-cp312-cp312-macosx_11_0_arm64.whl

Download URL cxx_image_io-1.1.7-cp312-cp312-macosx_11_0_arm64.whl
Size 4.0 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
8454d5d6d64a249f94b388a303a416c577d71d38ab4a97606354472e53d8de62
BLAKE2b-256 checksum
How to use checksums
11de418c0523368883bed71d398b5db46e0d6316f50773f5e8de0173e9c980ca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / cxx_image_io-1.1.7-cp311-cp311-win_amd64.whl

Download URL cxx_image_io-1.1.7-cp311-cp311-win_amd64.whl
Size 3.7 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
f65b6d602c7f2a76ceda0f4285f427f0b51f6a2e045e77137adba70d1db3a4d6
BLAKE2b-256 checksum
How to use checksums
efe21643681f93a4bca41f24e59012cfcb1064471b570f906d15e0f36f715aef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / cxx_image_io-1.1.7-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL cxx_image_io-1.1.7-cp311-cp311-musllinux_1_2_x86_64.whl
Size 6.3 MB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
f0f0d67966db24b5acb0d3691eea87375d99739d6e6d1426c2e1a72ba715e97c
BLAKE2b-256 checksum
How to use checksums
8ff636197015aa7d6a8563a17f317eb05d6c684b0aff6dbc803e114a91a88895
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / cxx_image_io-1.1.7-cp311-cp311-musllinux_1_2_aarch64.whl

Download URL cxx_image_io-1.1.7-cp311-cp311-musllinux_1_2_aarch64.whl
Size 6.3 MB
Tags CPython 3.11 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
20eb5a3592bcfd03cf615dbfcc757993b90018c4c229dba12921375f07932bc2
BLAKE2b-256 checksum
How to use checksums
b54821050a825838f4eaf3d049dad1a3a7ddf069cd49e839daba298eefd2ff7e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / cxx_image_io-1.1.7-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL cxx_image_io-1.1.7-cp311-cp311-manylinux_2_28_x86_64.whl
Size 5.2 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
61e4e82c7690081be5aafbc2371733461df02807a735112472fe925b0a9f6049
BLAKE2b-256 checksum
How to use checksums
f487a6f78bd9867e88a5b17fc99e3b9295b4032e3ea7fecb65bc72d33fd2794a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / cxx_image_io-1.1.7-cp311-cp311-manylinux_2_28_aarch64.whl

Download URL cxx_image_io-1.1.7-cp311-cp311-manylinux_2_28_aarch64.whl
Size 5.2 MB
Tags CPython 3.11 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
1fe2f899902d4e3848425aa1555396746bedaf877ae137bbe4455c2cae2f92f9
BLAKE2b-256 checksum
How to use checksums
602e12b777dc1c8fbffc44c20785d9208cf50cd412cb0c09da99768d007a5573
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / cxx_image_io-1.1.7-cp311-cp311-macosx_11_0_arm64.whl

Download URL cxx_image_io-1.1.7-cp311-cp311-macosx_11_0_arm64.whl
Size 4.0 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
a5b2bed1e3cf5fa28397bfd4bbb03f8d8342f648a2beff0529236b2368cd3dc3
BLAKE2b-256 checksum
How to use checksums
aa54e9f02eb9fc6c6233864f99956778631a47aceb1df2654d92c16a67aa8ae5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / cxx_image_io-1.1.7-cp310-cp310-win_amd64.whl

Download URL cxx_image_io-1.1.7-cp310-cp310-win_amd64.whl
Size 3.7 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
1d11fa01499955539734aa36fc7335b92ea18321272711de09767d4e2279498a
BLAKE2b-256 checksum
How to use checksums
f0a97f6790f45ec66ae509be275d8a000c8fcb5598d5eb0704deb885680c85f8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / cxx_image_io-1.1.7-cp310-cp310-musllinux_1_2_x86_64.whl

Download URL cxx_image_io-1.1.7-cp310-cp310-musllinux_1_2_x86_64.whl
Size 6.3 MB
Tags CPython 3.10 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
6eb2f20efdded5ad7250d99f0ef2591f9c8cbad90ab6597bf550d9a96ceb80a4
BLAKE2b-256 checksum
How to use checksums
ec3346f12f50ac4e1da78bb34171226f9b860d3ed79935aa4ab73b1a727bd2ef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / cxx_image_io-1.1.7-cp310-cp310-musllinux_1_2_aarch64.whl

Download URL cxx_image_io-1.1.7-cp310-cp310-musllinux_1_2_aarch64.whl
Size 6.3 MB
Tags CPython 3.10 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
a3ef0375c979019ff0b7d4fc5cc520ecea02c8d015e51497f9bd8d534d3c4bd5
BLAKE2b-256 checksum
How to use checksums
690e45f098b176d6dcd0df2f6c65e82db375bbe0f71d729a5c84bfc2281e339c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / cxx_image_io-1.1.7-cp310-cp310-manylinux_2_28_x86_64.whl

Download URL cxx_image_io-1.1.7-cp310-cp310-manylinux_2_28_x86_64.whl
Size 5.2 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
a2b1c45fae68f101206d58d320a88068bb28c1913137119ba72810c80cc7fc55
BLAKE2b-256 checksum
How to use checksums
95d95daff41d8ad8b37e862c8821f456c92cc0c1ef12240232b25ebda5d172df
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / cxx_image_io-1.1.7-cp310-cp310-manylinux_2_28_aarch64.whl

Download URL cxx_image_io-1.1.7-cp310-cp310-manylinux_2_28_aarch64.whl
Size 5.2 MB
Tags CPython 3.10 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
68bc886321f4f387a39362639d6efe09fddb0364babd77d83855cb03c07cdd4f
BLAKE2b-256 checksum
How to use checksums
38ad2257870069b88f62408890ec2050abb03a109a202a9328f2f730602670e2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / cxx_image_io-1.1.7-cp310-cp310-macosx_11_0_arm64.whl

Download URL cxx_image_io-1.1.7-cp310-cp310-macosx_11_0_arm64.whl
Size 4.0 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
720444c8e26c679431d9e4de40f7705de6ea863eed76c7c8cb35e46b3a656022
BLAKE2b-256 checksum
How to use checksums
08686b12470524712601d51601a49109e05f76bdf9df0d39fbfa924775d3d93f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7
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