Python bindings for libheif - HEIC/AVIF/JPEG2000 image codec
Project description
pylibheif
Python bindings for libheif using pybind11.
Features
- HEIC/HEIF Support: Read and write HEIC images (HEVC/H.265 encoded)
- AVIF Support: Read and write AVIF images (AV1 encoded)
- JPEG2000 Support: Read and write JPEG2000 images in HEIF container
- NumPy Integration: Zero-copy access to image data via Python Buffer Protocol
- Metadata Support: Read and write EXIF, XMP, and custom metadata
- RAII Resource Management: Automatic resource cleanup with context managers
Supported Formats
| Format | Decoding | Encoding | Codec |
|---|---|---|---|
| HEIC (HEVC/H.265) | ✅ | ✅ | libde265 / x265 |
| AVIF (AV1) | ✅ | ✅ | DAV1D + AOM |
| JPEG2000 | ✅ | ✅ | OpenJPEG |
Requirements
- Python >= 3.12
- NumPy >= 1.26.0
- CMake >= 3.15
- C++17 compatible compiler
System Dependencies
# macOS
brew install openjpeg
# Ubuntu/Debian
sudo apt install libopenjp2-7-dev
Installation
pip install pylibheif
Or with uv:
uv pip install pylibheif
Building from Source
# Clone with submodules
git clone --recursive https://github.com/twn39/pylibheif.git
cd pylibheif
# Install
uv pip install -e .
Usage
Reading HEIC/AVIF Images
Using context manager (recommended):
import pylibheif
import numpy as np
# Open HEIC file with context manager
with pylibheif.HeifContext() as ctx:
ctx.read_from_file('image.heic')
# Get primary image handle
handle = ctx.get_primary_image_handle()
print(f'Image size: {handle.width}x{handle.height}')
print(f'Has alpha: {handle.has_alpha}')
# Decode to RGB
img = handle.decode(pylibheif.HeifColorspace.RGB,
pylibheif.HeifChroma.InterleavedRGB)
# Get as NumPy array (zero-copy)
plane = img.get_plane(pylibheif.HeifChannel.Interleaved, False)
arr = np.asarray(plane) # shape: (height, width, 3)
Explicit creation (for more control):
import pylibheif
import numpy as np
# Create context explicitly
ctx = pylibheif.HeifContext()
ctx.read_from_file('image.heic')
handle = ctx.get_primary_image_handle()
img = handle.decode(pylibheif.HeifColorspace.RGB,
pylibheif.HeifChroma.InterleavedRGB)
plane = img.get_plane(pylibheif.HeifChannel.Interleaved, False)
arr = np.asarray(plane)
# Resources are automatically freed when objects go out of scope
Writing HEIC Images (H.265)
import pylibheif
import numpy as np
# Create image from NumPy array
width, height = 1920, 1080
img = pylibheif.HeifImage(width, height,
pylibheif.HeifColorspace.RGB,
pylibheif.HeifChroma.InterleavedRGB)
img.add_plane(pylibheif.HeifChannel.Interleaved, width, height, 8)
# Fill with data
plane = img.get_plane(pylibheif.HeifChannel.Interleaved, True)
arr = np.asarray(plane)
arr[:] = your_image_data # your RGB data
# Encode and save as HEIC
ctx = pylibheif.HeifContext()
encoder = pylibheif.HeifEncoder(pylibheif.HeifCompressionFormat.HEVC)
encoder.set_lossy_quality(85)
encoder.encode_image(ctx, img)
ctx.write_to_file('output.heic')
Writing AVIF Images (AV1)
import pylibheif
import numpy as np
# Prepare image (same as above)
width, height = 1920, 1080
img = pylibheif.HeifImage(width, height,
pylibheif.HeifColorspace.RGB,
pylibheif.HeifChroma.InterleavedRGB)
img.add_plane(pylibheif.HeifChannel.Interleaved, width, height, 8)
# Encode and save as AVIF
ctx = pylibheif.HeifContext()
# Use AV1 format for AVIF
encoder = pylibheif.HeifEncoder(pylibheif.HeifCompressionFormat.AV1)
encoder.set_lossy_quality(85)
encoder.set_parameter("speed", "6") # Optional: Tune speed (0-9)
encoder.encode_image(ctx, img)
# Save with .avif extension
ctx.write_to_file('output.avif')
Writing JPEG Images
import pylibheif
import numpy as np
# Prepare image (same as above)
width, height = 1920, 1080
img = pylibheif.HeifImage(width, height,
pylibheif.HeifColorspace.RGB,
pylibheif.HeifChroma.InterleavedRGB)
img.add_plane(pylibheif.HeifChannel.Interleaved, width, height, 8)
# Encode and save as JPEG
ctx = pylibheif.HeifContext()
# Use JPEG format
encoder = pylibheif.HeifEncoder(pylibheif.HeifCompressionFormat.JPEG)
encoder.set_lossy_quality(90) # Quality 0-100
encoder.encode_image(ctx, img)
# Save with .jpg extension
ctx.write_to_file('output.jpg')
Writing JPEG2000 Images
import pylibheif
import numpy as np
# Prepare image (same as above)
width, height = 1920, 1080
img = pylibheif.HeifImage(width, height,
pylibheif.HeifColorspace.RGB,
pylibheif.HeifChroma.InterleavedRGB)
img.add_plane(pylibheif.HeifChannel.Interleaved, width, height, 8)
# Encode and save as JPEG2000 in HEIF container
ctx = pylibheif.HeifContext()
# Use JPEG2000 format
encoder = pylibheif.HeifEncoder(pylibheif.HeifCompressionFormat.JPEG2000)
encoder.set_lossy_quality(85) # Quality 0-100
encoder.encode_image(ctx, img)
# Save with .jp2 or .heif extension
# Note: libheif typically saves JPEG2000 in a HEIF container
ctx.write_to_file('output.heif')
Encoder Selection
By default, pylibheif selects the best available encoder for the requested format (e.g. x265 for HEVC). You can also explicitly select a specific encoder (e.g. Kvazaar) if available.
import pylibheif
# 1. Get all available HEVC encoders
descriptors = pylibheif.get_encoder_descriptors(pylibheif.HeifCompressionFormat.HEVC)
# Print available encoders
for d in descriptors:
print(f"ID: {d.id_name}, Name: {d.name}")
# 2. Find specific encoder (e.g. Kvazaar)
kvazaar_desc = next((d for d in descriptors if "kvazaar" in d.id_name), None)
if kvazaar_desc:
# 3. Create encoder explicitly using the descriptor
encoder = pylibheif.HeifEncoder(kvazaar_desc)
# Verify which encoder is used
print(f"Using encoder: {encoder.name}")
encoder.set_lossy_quality(85)
# encoder.encode_image(...)
# encoder.encode_image(...)
Reading Metadata
import pylibheif
ctx = pylibheif.HeifContext()
ctx.read_from_file('image.heic')
handle = ctx.get_primary_image_handle()
# Get metadata block IDs
exif_ids = handle.get_metadata_block_ids('Exif')
for id in exif_ids:
metadata_type = handle.get_metadata_block_type(id)
metadata_bytes = handle.get_metadata_block(id)
print(f'Metadata type: {metadata_type}, size: {len(metadata_bytes)}')
Writing Metadata
import pylibheif
import numpy as np
# Create and encode an image
width, height = 64, 64
img = pylibheif.HeifImage(width, height,
pylibheif.HeifColorspace.RGB,
pylibheif.HeifChroma.InterleavedRGB)
img.add_plane(pylibheif.HeifChannel.Interleaved, width, height, 8)
plane = img.get_plane(pylibheif.HeifChannel.Interleaved, True)
arr = np.asarray(plane)
arr[:] = 128 # fill with gray
ctx = pylibheif.HeifContext()
encoder = pylibheif.HeifEncoder(pylibheif.HeifCompressionFormat.HEVC)
encoder.set_lossy_quality(85)
handle = encoder.encode_image(ctx, img)
# Add EXIF metadata (with 4-byte offset prefix for TIFF header)
exif_data = b'\x00\x00\x00\x00' + b'Exif\x00\x00' + b'II*\x00...' # your EXIF data
ctx.add_exif_metadata(handle, exif_data)
# Add XMP metadata
xmp_data = b'''<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about="" xmlns:dc="http://purl.org/dc/elements/1.1/">
<dc:creator>My App</dc:creator>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end="w"?>'''
ctx.add_xmp_metadata(handle, xmp_data)
# Add custom/generic metadata
custom_data = b'{"app": "myapp", "version": "1.0"}'
ctx.add_generic_metadata(handle, custom_data, "json", "application/json")
# Save
ctx.write_to_file('output_with_metadata.heic')
API Reference
class pylibheif.HeifContext
Manages the valid lifetime of libheif context. It is the main entry point (root object) for high-level API.
Methods
__init__()
Creates a new empty context.
read_from_file(filename: str) -> None
Reads a HEIF file from the given filename.
filename: Path to the HEIF file.
read_from_memory(data: bytes) -> None
Reads a HEIF file from a bytes object.
data: Bytes containing the file content.
write_to_file(filename: str) -> None
Writes the current context to a file.
filename: Destination path.
write_to_bytes() -> bytes
Writes the current context to a bytes object.
- Returns:
bytesobject containing the encoded file data.
get_primary_image_handle() -> HeifImageHandle
Gets the handle for the primary image in the file.
- Returns:
HeifImageHandlefor the primary image.
get_image_handle(id: int) -> HeifImageHandle
Gets the handle for a specific image ID.
id: The ID of the image (seeget_list_of_top_level_image_IDs).- Returns:
HeifImageHandle.
get_list_of_top_level_image_IDs() -> List[int]
Gets a list of IDs of all top-level images in the file.
- Returns: List of integer IDs.
add_exif_metadata(handle: HeifImageHandle, data: bytes) -> None
Adds EXIF metadata to the specified image.
handle: Image handle from encoding.data: Raw EXIF bytes (with 4-byte offset prefix for TIFF header).
add_xmp_metadata(handle: HeifImageHandle, data: bytes) -> None
Adds XMP metadata to the specified image.
handle: Image handle from encoding.data: XMP XML as bytes.
add_generic_metadata(handle: HeifImageHandle, data: bytes, item_type: str, content_type: str = "") -> None
Adds generic/custom metadata to the specified image.
handle: Image handle from encoding.data: Raw metadata bytes.item_type: Metadata item type (e.g. "json", "iptc").content_type: Optional MIME content type (e.g. "application/json").
class pylibheif.HeifImageHandle
Represents a compressed image within the HEIF file.
Properties
width(int): The width of the image.height(int): The height of the image.has_alpha(bool): True if the image has an alpha channel.
Methods
decode(colorspace: HeifColorspace = HeifColorspace.RGB, chroma: HeifChroma = HeifChroma.InterleavedRGB) -> HeifImage
Decodes the image handle into an uncompressed HeifImage.
colorspace: Target colorspace (default: RGB).chroma: Target chroma format (default: InterleavedRGB).- Returns: Decoded
HeifImage.
get_metadata_block_ids(type_filter: str = "") -> List[str]
Gets a list of metadata block IDs attached to this image.
type_filter: Optional filter string (e.g. "Exif", "XMP").- Returns: List of metadata ID strings.
get_metadata_block_type(id: str) -> str
Gets the type string of a specific metadata block.
id: Metadata ID.- Returns: Type string (e.g. "Exif").
get_metadata_block(id: str) -> bytes
Gets the raw data of a metadata block.
id: Metadata ID.- Returns:
bytesobject containing the metadata.
class pylibheif.HeifImage
Represents an uncompressed image containing pixel data. Supports the Python Buffer Protocol for zero-copy access with NumPy.
Properties
width(int): The width of the image.height(int): The height of the image.
Methods
__init__(width: int, height: int, colorspace: HeifColorspace, chroma: HeifChroma)
Creates a new empty image.
width: Image width.height: Image height.colorspace: Image colorspace.chroma: Image chroma format.
add_plane(channel: HeifChannel, width: int, height: int, bit_depth: int) -> None
Adds a new plane to the image.
channel: The channel type (e.g.HeifChannel.Interleaved).width: Width of the plane.height: Height of the plane.bit_depth: Bit depth (e.g. 8).
get_plane(channel: HeifChannel, writeable: bool = False) -> HeifPlane
Gets a plane object that supports the buffer protocol.
channel: The channel to retrieve.writeable: Whether the buffer should be writable.- Returns:
HeifPlaneobject (wrappable withnp.asarray()).
class pylibheif.HeifEncoder
Controls the encoding process.
Methods
__init__(format: HeifCompressionFormat)
Creates a new encoder for the specified format.
format: Compression format (e.g.HeifCompressionFormat.HEVC).
set_lossy_quality(quality: int) -> None
Sets the quality for lossy compression.
quality: Integer between 0 (lowest) and 100 (highest).
set_parameter(name: str, value: str) -> None
Sets a low-level encoder parameter.
name: Parameter name (e.g. "speed" for AV1).value: Parameter value.
encode_image(context: HeifContext, image: HeifImage, preset: str = "") -> HeifImageHandle
Encodes the given image and appends it to the context.
context: The destinationHeifContext.image: The sourceHeifImageto encode.preset: Optional encoder preset (e.g. "ultrafast", "slow"). Default is empty (balanced/default). Note: This maps to the 'preset' parameter in libheif. It works for x265 (check version), but AOM and others may use different parameters (e.g. 'speed') which should be set viaset_parameterinstead.- Returns:
HeifImageHandlefor the encoded image. Can be used to add metadata.
Enums
pylibheif.HeifColorspace
RGB,YCbCr,Monochrome,Undefined
pylibheif.HeifChroma
InterleavedRGB: Interleaved R, G, B bytes.InterleavedRGBA: Interleaved R, G, B, A bytes.C420: YUV 4:2:0 planar.C422: YUV 4:2:2 planar.C444: YUV 4:4:4 planar.Monochrome.
pylibheif.HeifChannel
Interleaved: For interleaved RGB/RGBA.Y,Cb,Cr: For YUV planar.R,G,B: For RGB planar.Alpha: For Alpha channel.
pylibheif.HeifCompressionFormat
HEVC: H.265 (libx265).AV1: AV1 (AOM/RAV1E/SVT).JPEG: JPEG.JPEG2000: JPEG 2000 (OpenJPEG).
Building from Source
# Clone with submodules
git clone --recursive https://github.com/your-username/pylibheif.git
cd pylibheif
# Build
uv pip install -e .
Performance
Performance
Benchmarks on 1280x720 RGB image (Apple Silicon), comparing encoders at Iso-Quality (approx. 29.2 dB PSNR) to ensure fair speed comparison.
Baseline: x265 (HEVC) at Quality 80 (Medium Preset).
| Encoder | Quality Setting | Time (Mean) | vs x265 | Note |
|---|---|---|---|---|
| AOM AV1 | Q86 (Speed 6) | ~115 ms | 1.8x Faster | 🚀 Fastest & Best Efficiency |
| Kvazaar (HEVC) | Q80 | ~125 ms | 1.6x Faster | Best HEVC option |
| x265 (HEVC) | Q80 | ~206 ms | Baseline |
Key Findings:
- AOM AV1 Efficiency: Surprisingly,
libaom(at speed 6) is the fastest encoder in this test, outperforming even the highly optimized Kvazaar HEVC encoder while maintaining excellent compression efficiency (smallest file size). - HEVC Choice: If you need HEVC, Kvazaar is significantly faster than x265 for similar quality.
Raw Benchmark Output (Iso-Quality Run)
----------------------------------------------------------------------------------
Test: 1280x720 RGB Image, 10 Rounds
----------------------------------------------------------------------------------
Name (time in ms) Mean OPS
----------------------------------------------------------------------------------
test_benchmark_encode_aom_av1 115.64 8.65 (Q86)
test_benchmark_encode_kvazaar 125.19 7.96 (Q80)
test_benchmark_encode_x265 206.03 4.65 (Q80 / Limit)
----------------------------------------------------------------------------------
Run benchmarks yourself:
uv pip install pillow-heif pytest-benchmark
uv run pytest tests/test_benchmark.py --benchmark-only --benchmark-min-rounds=20
License
This project is licensed under the LGPL-3.0 License - see the LICENSE file for details.
Acknowledgments
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pylibheif-1.21.2.post9.tar.gz.
File metadata
- Download URL: pylibheif-1.21.2.post9.tar.gz
- Upload date:
- Size: 4.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eeefe511f64dca8021958d54f89c021faa1db72771efc64d92ec5259a532d01f
|
|
| MD5 |
99bd6a4459f36d8dbca41ef8e089d534
|
|
| BLAKE2b-256 |
b2cd2a7c81cecb8fd67fb24fd3b9788a96c4fe51b66b66a7ef2bcf2414d2f321
|
Provenance
The following attestation bundles were made for pylibheif-1.21.2.post9.tar.gz:
Publisher:
build.yml on twn39/pylibheif
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pylibheif-1.21.2.post9.tar.gz -
Subject digest:
eeefe511f64dca8021958d54f89c021faa1db72771efc64d92ec5259a532d01f - Sigstore transparency entry: 919097538
- Sigstore integration time:
-
Permalink:
twn39/pylibheif@77370fe893807dcab09b994b3f9df4e75bf7ae3a -
Branch / Tag:
refs/tags/v1.21.2.post9 - Owner: https://github.com/twn39
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@77370fe893807dcab09b994b3f9df4e75bf7ae3a -
Trigger Event:
push
-
Statement type:
File details
Details for the file pylibheif-1.21.2.post9-cp314-cp314-win_amd64.whl.
File metadata
- Download URL: pylibheif-1.21.2.post9-cp314-cp314-win_amd64.whl
- Upload date:
- Size: 6.4 MB
- Tags: CPython 3.14, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2963fe1d7ddd8e277f730e62b525b8aeaeee3fe645118dfc7bb0cbe3172f5ed0
|
|
| MD5 |
47af84341a750699f3dc932e7d45c81e
|
|
| BLAKE2b-256 |
9300de6975213b4c5cd67c57dcc3215902d0d0000c41a8418490dffa9da05e93
|
Provenance
The following attestation bundles were made for pylibheif-1.21.2.post9-cp314-cp314-win_amd64.whl:
Publisher:
build.yml on twn39/pylibheif
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pylibheif-1.21.2.post9-cp314-cp314-win_amd64.whl -
Subject digest:
2963fe1d7ddd8e277f730e62b525b8aeaeee3fe645118dfc7bb0cbe3172f5ed0 - Sigstore transparency entry: 919097539
- Sigstore integration time:
-
Permalink:
twn39/pylibheif@77370fe893807dcab09b994b3f9df4e75bf7ae3a -
Branch / Tag:
refs/tags/v1.21.2.post9 - Owner: https://github.com/twn39
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@77370fe893807dcab09b994b3f9df4e75bf7ae3a -
Trigger Event:
push
-
Statement type:
File details
Details for the file pylibheif-1.21.2.post9-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pylibheif-1.21.2.post9-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 5.8 MB
- Tags: CPython 3.14, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2f46a245363a5a5ee9a5d072f1b6d9f4208e3aebbd14c2adedc6679a9450913c
|
|
| MD5 |
7f9e74dedbc3944b2d606d1dd5396c90
|
|
| BLAKE2b-256 |
86aa5c464ddc4cd36cfbead4fa414dc2a7aa13ffd6423ef1cb25afbd6b9e0b93
|
Provenance
The following attestation bundles were made for pylibheif-1.21.2.post9-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
build.yml on twn39/pylibheif
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pylibheif-1.21.2.post9-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
2f46a245363a5a5ee9a5d072f1b6d9f4208e3aebbd14c2adedc6679a9450913c - Sigstore transparency entry: 919097543
- Sigstore integration time:
-
Permalink:
twn39/pylibheif@77370fe893807dcab09b994b3f9df4e75bf7ae3a -
Branch / Tag:
refs/tags/v1.21.2.post9 - Owner: https://github.com/twn39
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@77370fe893807dcab09b994b3f9df4e75bf7ae3a -
Trigger Event:
push
-
Statement type:
File details
Details for the file pylibheif-1.21.2.post9-cp314-cp314-macosx_14_0_arm64.whl.
File metadata
- Download URL: pylibheif-1.21.2.post9-cp314-cp314-macosx_14_0_arm64.whl
- Upload date:
- Size: 4.7 MB
- Tags: CPython 3.14, macOS 14.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8892ee83bb7f00ff4be1216ab1fbd89dd9e9f77c0f6858371ce5167703d8a71b
|
|
| MD5 |
9540711e324726e3caa36b3b71911380
|
|
| BLAKE2b-256 |
862ccc092db9b6acde57a4b18f6e479f105c0a6b64a7bbe000286521ebd8cde2
|
Provenance
The following attestation bundles were made for pylibheif-1.21.2.post9-cp314-cp314-macosx_14_0_arm64.whl:
Publisher:
build.yml on twn39/pylibheif
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pylibheif-1.21.2.post9-cp314-cp314-macosx_14_0_arm64.whl -
Subject digest:
8892ee83bb7f00ff4be1216ab1fbd89dd9e9f77c0f6858371ce5167703d8a71b - Sigstore transparency entry: 919097550
- Sigstore integration time:
-
Permalink:
twn39/pylibheif@77370fe893807dcab09b994b3f9df4e75bf7ae3a -
Branch / Tag:
refs/tags/v1.21.2.post9 - Owner: https://github.com/twn39
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@77370fe893807dcab09b994b3f9df4e75bf7ae3a -
Trigger Event:
push
-
Statement type:
File details
Details for the file pylibheif-1.21.2.post9-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: pylibheif-1.21.2.post9-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 6.3 MB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0c84d48b595be5913807092fcba189ff081711e1ac0af88fd7ec81f03b6e98e9
|
|
| MD5 |
03753e4d937c92b8246360fb9b4be8d2
|
|
| BLAKE2b-256 |
c5fbb8042c0b5081ac918e9d5dd038577a9d0de009cd4f5b195e80109af1ef88
|
Provenance
The following attestation bundles were made for pylibheif-1.21.2.post9-cp313-cp313-win_amd64.whl:
Publisher:
build.yml on twn39/pylibheif
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pylibheif-1.21.2.post9-cp313-cp313-win_amd64.whl -
Subject digest:
0c84d48b595be5913807092fcba189ff081711e1ac0af88fd7ec81f03b6e98e9 - Sigstore transparency entry: 919097561
- Sigstore integration time:
-
Permalink:
twn39/pylibheif@77370fe893807dcab09b994b3f9df4e75bf7ae3a -
Branch / Tag:
refs/tags/v1.21.2.post9 - Owner: https://github.com/twn39
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@77370fe893807dcab09b994b3f9df4e75bf7ae3a -
Trigger Event:
push
-
Statement type:
File details
Details for the file pylibheif-1.21.2.post9-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pylibheif-1.21.2.post9-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 5.8 MB
- Tags: CPython 3.13, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e6fa20a2eec0347e7d728b63e1ab6a3c66e4f423104550796db87f9afa13ea8e
|
|
| MD5 |
f290bf29ef343507de23029174eb28ff
|
|
| BLAKE2b-256 |
4a96344b232f06cc5aa4984d10441876d19be9ebd3d7bb6aaec23cedd014d5da
|
Provenance
The following attestation bundles were made for pylibheif-1.21.2.post9-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
build.yml on twn39/pylibheif
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pylibheif-1.21.2.post9-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
e6fa20a2eec0347e7d728b63e1ab6a3c66e4f423104550796db87f9afa13ea8e - Sigstore transparency entry: 919097573
- Sigstore integration time:
-
Permalink:
twn39/pylibheif@77370fe893807dcab09b994b3f9df4e75bf7ae3a -
Branch / Tag:
refs/tags/v1.21.2.post9 - Owner: https://github.com/twn39
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@77370fe893807dcab09b994b3f9df4e75bf7ae3a -
Trigger Event:
push
-
Statement type:
File details
Details for the file pylibheif-1.21.2.post9-cp313-cp313-macosx_14_0_arm64.whl.
File metadata
- Download URL: pylibheif-1.21.2.post9-cp313-cp313-macosx_14_0_arm64.whl
- Upload date:
- Size: 4.7 MB
- Tags: CPython 3.13, macOS 14.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
404727264d6f5b8c05108aa1551b6aa76107ef0f95b44151f216bc30d0878730
|
|
| MD5 |
972e26c0651de20f3d77da6e983c3118
|
|
| BLAKE2b-256 |
58a01f7d4c40817ea3d841f2dfb68e73f75d5504eba10916cb9b7661f88e915a
|
Provenance
The following attestation bundles were made for pylibheif-1.21.2.post9-cp313-cp313-macosx_14_0_arm64.whl:
Publisher:
build.yml on twn39/pylibheif
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pylibheif-1.21.2.post9-cp313-cp313-macosx_14_0_arm64.whl -
Subject digest:
404727264d6f5b8c05108aa1551b6aa76107ef0f95b44151f216bc30d0878730 - Sigstore transparency entry: 919097548
- Sigstore integration time:
-
Permalink:
twn39/pylibheif@77370fe893807dcab09b994b3f9df4e75bf7ae3a -
Branch / Tag:
refs/tags/v1.21.2.post9 - Owner: https://github.com/twn39
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@77370fe893807dcab09b994b3f9df4e75bf7ae3a -
Trigger Event:
push
-
Statement type:
File details
Details for the file pylibheif-1.21.2.post9-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: pylibheif-1.21.2.post9-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 6.3 MB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4b8275fefaec0b93abc4949bde680f27359b39350c9834d985d1117b88906ba4
|
|
| MD5 |
998686f674971146ee3c1fcf9677bdc0
|
|
| BLAKE2b-256 |
46aad938a4e7611209b0d1ef3affaccb8b82b8980c1da450a49a27eb2b502e0d
|
Provenance
The following attestation bundles were made for pylibheif-1.21.2.post9-cp312-cp312-win_amd64.whl:
Publisher:
build.yml on twn39/pylibheif
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pylibheif-1.21.2.post9-cp312-cp312-win_amd64.whl -
Subject digest:
4b8275fefaec0b93abc4949bde680f27359b39350c9834d985d1117b88906ba4 - Sigstore transparency entry: 919097552
- Sigstore integration time:
-
Permalink:
twn39/pylibheif@77370fe893807dcab09b994b3f9df4e75bf7ae3a -
Branch / Tag:
refs/tags/v1.21.2.post9 - Owner: https://github.com/twn39
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@77370fe893807dcab09b994b3f9df4e75bf7ae3a -
Trigger Event:
push
-
Statement type:
File details
Details for the file pylibheif-1.21.2.post9-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pylibheif-1.21.2.post9-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 5.8 MB
- Tags: CPython 3.12, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
67abacf94d2c8415bc73a1de3d38fbab45cd8d37a34f32c8e524e4d7dab15273
|
|
| MD5 |
b486430420a4243a57ecda919dc93945
|
|
| BLAKE2b-256 |
c0b433bd0b649c8ced5c941524b2743adc7f74b1d4139c4be7755b64585a61a6
|
Provenance
The following attestation bundles were made for pylibheif-1.21.2.post9-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
build.yml on twn39/pylibheif
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pylibheif-1.21.2.post9-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
67abacf94d2c8415bc73a1de3d38fbab45cd8d37a34f32c8e524e4d7dab15273 - Sigstore transparency entry: 919097555
- Sigstore integration time:
-
Permalink:
twn39/pylibheif@77370fe893807dcab09b994b3f9df4e75bf7ae3a -
Branch / Tag:
refs/tags/v1.21.2.post9 - Owner: https://github.com/twn39
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@77370fe893807dcab09b994b3f9df4e75bf7ae3a -
Trigger Event:
push
-
Statement type:
File details
Details for the file pylibheif-1.21.2.post9-cp312-cp312-macosx_14_0_arm64.whl.
File metadata
- Download URL: pylibheif-1.21.2.post9-cp312-cp312-macosx_14_0_arm64.whl
- Upload date:
- Size: 4.7 MB
- Tags: CPython 3.12, macOS 14.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5076368892e98650bb943d5afa57bd8bc5bd92fe7e69a4d16215910634eb70ca
|
|
| MD5 |
00840224a561292c5c2ba8c3ffd66993
|
|
| BLAKE2b-256 |
b66c66de4a50833183c159e1e5afb3d2750fa2ea6fc8e055d4783d6e8300efe9
|
Provenance
The following attestation bundles were made for pylibheif-1.21.2.post9-cp312-cp312-macosx_14_0_arm64.whl:
Publisher:
build.yml on twn39/pylibheif
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pylibheif-1.21.2.post9-cp312-cp312-macosx_14_0_arm64.whl -
Subject digest:
5076368892e98650bb943d5afa57bd8bc5bd92fe7e69a4d16215910634eb70ca - Sigstore transparency entry: 919097546
- Sigstore integration time:
-
Permalink:
twn39/pylibheif@77370fe893807dcab09b994b3f9df4e75bf7ae3a -
Branch / Tag:
refs/tags/v1.21.2.post9 - Owner: https://github.com/twn39
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@77370fe893807dcab09b994b3f9df4e75bf7ae3a -
Trigger Event:
push
-
Statement type:
File details
Details for the file pylibheif-1.21.2.post9-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: pylibheif-1.21.2.post9-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 6.3 MB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ac07d754565a2e73c94aaebba954baf4c497677fb53ffc798701b513948d5a7f
|
|
| MD5 |
4e242a2259bca414986343cf9b845f1d
|
|
| BLAKE2b-256 |
492bf314cce005685a1a8fb68ae4a64ac12a1100b3b73a06ae5c97ec501268e6
|
Provenance
The following attestation bundles were made for pylibheif-1.21.2.post9-cp311-cp311-win_amd64.whl:
Publisher:
build.yml on twn39/pylibheif
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pylibheif-1.21.2.post9-cp311-cp311-win_amd64.whl -
Subject digest:
ac07d754565a2e73c94aaebba954baf4c497677fb53ffc798701b513948d5a7f - Sigstore transparency entry: 919097577
- Sigstore integration time:
-
Permalink:
twn39/pylibheif@77370fe893807dcab09b994b3f9df4e75bf7ae3a -
Branch / Tag:
refs/tags/v1.21.2.post9 - Owner: https://github.com/twn39
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@77370fe893807dcab09b994b3f9df4e75bf7ae3a -
Trigger Event:
push
-
Statement type:
File details
Details for the file pylibheif-1.21.2.post9-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pylibheif-1.21.2.post9-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 5.8 MB
- Tags: CPython 3.11, manylinux: glibc 2.27+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e694cd4549877670f7d1e05f58b2a73e411c095c72fc7d91b8e3aaa552e5f563
|
|
| MD5 |
0fdbac98d70cc4e1560f7bc32d23a3a7
|
|
| BLAKE2b-256 |
e74a9f6f61b34e1d864aaf28b88a55b01cd1130c1bec4b16eb1b795a87657301
|
Provenance
The following attestation bundles were made for pylibheif-1.21.2.post9-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:
Publisher:
build.yml on twn39/pylibheif
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pylibheif-1.21.2.post9-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl -
Subject digest:
e694cd4549877670f7d1e05f58b2a73e411c095c72fc7d91b8e3aaa552e5f563 - Sigstore transparency entry: 919097568
- Sigstore integration time:
-
Permalink:
twn39/pylibheif@77370fe893807dcab09b994b3f9df4e75bf7ae3a -
Branch / Tag:
refs/tags/v1.21.2.post9 - Owner: https://github.com/twn39
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@77370fe893807dcab09b994b3f9df4e75bf7ae3a -
Trigger Event:
push
-
Statement type:
File details
Details for the file pylibheif-1.21.2.post9-cp311-cp311-macosx_14_0_arm64.whl.
File metadata
- Download URL: pylibheif-1.21.2.post9-cp311-cp311-macosx_14_0_arm64.whl
- Upload date:
- Size: 4.7 MB
- Tags: CPython 3.11, macOS 14.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
24667e5cc7fa94f8fe1ad007d35d7acb0f84cdd9562da38ea03c921c91e0060f
|
|
| MD5 |
5689e3589513b8d4406fc806ccd3de56
|
|
| BLAKE2b-256 |
43dedbd8f2746329a937e27d7d6a93a44221d894d12f3cc946f7ea0c266732d3
|
Provenance
The following attestation bundles were made for pylibheif-1.21.2.post9-cp311-cp311-macosx_14_0_arm64.whl:
Publisher:
build.yml on twn39/pylibheif
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pylibheif-1.21.2.post9-cp311-cp311-macosx_14_0_arm64.whl -
Subject digest:
24667e5cc7fa94f8fe1ad007d35d7acb0f84cdd9562da38ea03c921c91e0060f - Sigstore transparency entry: 919097583
- Sigstore integration time:
-
Permalink:
twn39/pylibheif@77370fe893807dcab09b994b3f9df4e75bf7ae3a -
Branch / Tag:
refs/tags/v1.21.2.post9 - Owner: https://github.com/twn39
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@77370fe893807dcab09b994b3f9df4e75bf7ae3a -
Trigger Event:
push
-
Statement type: