Initial commit

This commit is contained in:
2024-08-27 20:33:44 +02:00
commit 1f1832267d
14794 changed files with 1599592 additions and 0 deletions

View File

@@ -0,0 +1 @@
pip

View File

@@ -0,0 +1,30 @@
Copyright (c) 2021-2023, Pillow-Heif contributors.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
* Neither the name of the Pillow-Heif nor the names of any
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@@ -0,0 +1,27 @@
License for "pillow-heif" binary wheels: GPLv2, due to base library licenses.
Binary wheels combine several license-compatible libraries. Here they are listed.
Name: libheif
License: LGPLv3
Files: libheif.[dylib|so|dll]
For details, see https://github.com/strukturag/libheif/tree/v1.18.1/COPYING
Source code: https://github.com/strukturag/libheif/tree/v1.18.1
Name: libde265
License: LGPLv3
Files: libde265.[dylib|so|dll]
For details, see https://github.com/strukturag/libde265/tree/v1.0.15/COPYING
Source code: https://github.com/strukturag/libde265/tree/v1.0.15
Name: x265
License: GPLv2
Files: libx265.[dylib|so|dll]
For details, see https://bitbucket.org/multicoreware/x265_git/src/Release_3.4/COPYING
Source code: https://bitbucket.org/multicoreware/x265_git/src/Release_3.4
Name: libaom
License: BSD 3-Clause
Files: libaom.[dylib|so|dll]
For details, see https://aomedia.googlesource.com/aom/+/refs/tags/v3.6.1/LICENSE
Source code: https://aomedia.googlesource.com/aom/+/refs/tags/v3.6.1

View File

@@ -0,0 +1,217 @@
Metadata-Version: 2.1
Name: pillow_heif
Version: 0.18.0
Summary: Python interface for libheif library
Home-page: https://github.com/bigcat88/pillow_heif
Author: Alexander Piskun
Author-email: bigcat88@users.noreply.github.com
License: BSD-3-Clause
Project-URL: Documentation, https://pillow-heif.readthedocs.io
Project-URL: Source, https://github.com/bigcat88/pillow_heif
Project-URL: Changelog, https://github.com/bigcat88/pillow_heif/blob/master/CHANGELOG.md
Keywords: heif,heic,avif,pillow
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Multimedia :: Graphics
Classifier: Topic :: Multimedia :: Graphics :: Graphics Conversion
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: License :: OSI Approved :: GNU General Public License v2 (GPLv2)
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: Microsoft :: Windows
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE.txt
License-File: LICENSES_bundled.txt
Requires-Dist: pillow >=10.1.0
Provides-Extra: dev
Requires-Dist: pytest ; extra == 'dev'
Requires-Dist: defusedxml ; extra == 'dev'
Requires-Dist: packaging ; extra == 'dev'
Requires-Dist: numpy ; extra == 'dev'
Requires-Dist: pympler ; extra == 'dev'
Requires-Dist: opencv-python ==4.10.0.84 ; extra == 'dev'
Requires-Dist: pre-commit ; extra == 'dev'
Requires-Dist: pylint ; extra == 'dev'
Requires-Dist: coverage ; extra == 'dev'
Provides-Extra: docs
Requires-Dist: sphinx >=4.4 ; extra == 'docs'
Requires-Dist: sphinx-issues >=3.0.1 ; extra == 'docs'
Requires-Dist: sphinx-rtd-theme >=1.0 ; extra == 'docs'
Provides-Extra: tests
Requires-Dist: pytest ; extra == 'tests'
Requires-Dist: defusedxml ; extra == 'tests'
Requires-Dist: packaging ; extra == 'tests'
Requires-Dist: numpy ; extra == 'tests'
Requires-Dist: pympler ; extra == 'tests'
Provides-Extra: tests-min
Requires-Dist: pytest ; extra == 'tests-min'
Requires-Dist: defusedxml ; extra == 'tests-min'
Requires-Dist: packaging ; extra == 'tests-min'
# pillow-heif
[![Analysis & Coverage](https://github.com/bigcat88/pillow_heif/actions/workflows/analysis-coverage.yml/badge.svg)](https://github.com/bigcat88/pillow_heif/actions/workflows/analysis-coverage.yml)
[![Nightly build](https://github.com/bigcat88/pillow_heif/actions/workflows/nightly-src-build.yml/badge.svg)](https://github.com/bigcat88/pillow_heif/actions/workflows/nightly-src-build.yml)
[![Wheels test](https://github.com/bigcat88/pillow_heif/actions/workflows/test-wheels.yml/badge.svg)](https://github.com/bigcat88/pillow_heif/actions/workflows/test-wheels.yml)
[![docs](https://readthedocs.org/projects/pillow-heif/badge/?version=latest)](https://pillow-heif.readthedocs.io/en/latest/?badge=latest)
[![codecov](https://codecov.io/gh/bigcat88/pillow_heif/branch/master/graph/badge.svg?token=JY64F2OL6V)](https://codecov.io/gh/bigcat88/pillow_heif)
![PythonVersion](https://img.shields.io/badge/python-3.8%20%7C%203.9%20%7C%203.10%20%7C%203.11%20%7C%203.12%20%7C%203.13-blue)
![impl](https://img.shields.io/pypi/implementation/pillow_heif)
![pypi](https://img.shields.io/pypi/v/pillow_heif.svg)
[![Downloads](https://static.pepy.tech/personalized-badge/pillow-heif?period=total&units=international_system&left_color=grey&right_color=orange&left_text=Downloads)](https://pepy.tech/project/pillow-heif)
[![Downloads](https://static.pepy.tech/personalized-badge/pillow-heif?period=month&units=international_system&left_color=grey&right_color=orange&left_text=Downloads/Month)](https://pepy.tech/project/pillow-heif)
![Mac OS](https://img.shields.io/badge/mac%20os-FCC624?style=for-the-badge&logoColor=white)
![Windows](https://img.shields.io/badge/Windows-0078D6?style=for-the-badge&logo=windows&logoColor=white)
![Linux](https://img.shields.io/badge/Linux-FCC624?style=for-the-badge&logo=linux&logoColor=black)
![Alpine Linux](https://img.shields.io/badge/Alpine_Linux-0078D6.svg?style=for-the-badge&logo=alpine-linux&logoColor=white)
![Raspberry Pi](https://img.shields.io/badge/Rasberry_Pi-FCC624.svg?style=for-the-badge&logo=raspberry-pi&logoColor=red)
Python bindings to [libheif](https://github.com/strukturag/libheif) for working with HEIF images and plugin for Pillow.
Features:
* Decoding of `8`, `10`, `12` bit HEIC and AVIF files.
* Encoding of `8`, `10`, `12` bit HEIC and AVIF files.
* `EXIF`, `XMP`, `IPTC` read & write support.
* Support of multiple images in one file and a `PrimaryImage` attribute.
* Adding & removing `thumbnails`.
* Reading of `Depth Images`.
* Adding HEIF support to Pillow in one line of code as a plugin.
Note: Here is a light version [pi-heif](https://pypi.org/project/pi-heif/) of this project without encoding capabilities.
### Install
```console
python3 -m pip install -U pip
python3 -m pip install pillow-heif
```
### Example of use as a Pillow plugin
```python3
from PIL import Image
from pillow_heif import register_heif_opener
register_heif_opener()
im = Image.open("image.heic") # do whatever need with a Pillow image
im = im.rotate(13)
im.save(f"rotated_image.heic", quality=90)
```
### 16 bit PNG to 10 bit HEIF using OpenCV
```python3
import cv2
import pillow_heif
cv_img = cv2.imread("16bit_with_alpha.png", cv2.IMREAD_UNCHANGED)
heif_file = pillow_heif.from_bytes(
mode="BGRA;16",
size=(cv_img.shape[1], cv_img.shape[0]),
data=bytes(cv_img)
)
heif_file.save("RGBA_10bit.heic", quality=-1)
```
### 8/10/12 bit HEIF to 8/16 bit PNG using OpenCV
```python3
import numpy as np
import cv2
import pillow_heif
heif_file = pillow_heif.open_heif("image.heic", convert_hdr_to_8bit=False, bgr_mode=True)
np_array = np.asarray(heif_file)
cv2.imwrite("image.png", np_array)
```
### Accessing decoded image data
```python3
import pillow_heif
if pillow_heif.is_supported("image.heic"):
heif_file = pillow_heif.open_heif("image.heic", convert_hdr_to_8bit=False)
print("image size:", heif_file.size)
print("image mode:", heif_file.mode)
print("image data length:", len(heif_file.data))
print("image data stride:", heif_file.stride)
```
### Get decoded image data as a Numpy array
```python3
import numpy as np
import pillow_heif
if pillow_heif.is_supported("input.heic"):
heif_file = pillow_heif.open_heif("input.heic")
np_array = np.asarray(heif_file)
```
### AVIF support
Working with the `AVIF` files as the same as with the `HEIC` files. Just use a separate function to register plugin:
```python3
import pillow_heif
pillow_heif.register_avif_opener()
```
### Accessing Depth Images
```python3
from PIL import Image
from pillow_heif import register_heif_opener
import numpy as np
register_heif_opener()
im = Image.open("../tests/images/heif_other/pug.heic")
if im.info["depth_images"]:
depth_im = im.info["depth_images"][0] # Access the first depth image (usually there will be only one).
# Depth images are instances of `class HeifDepthImage(BaseImage)`,
# so work with them as you would with any usual image in pillow_heif.
# Depending on what you need the depth image for, you can convert it to a NumPy array or convert it to a Pillow image.
pil_im = depth_im.to_pillow()
np_im = np.asarray(depth_im)
print(pil_im)
print(pil_im.info["metadata"])
```
### More Information
- [Documentation](https://pillow-heif.readthedocs.io/)
- [Installation](https://pillow-heif.readthedocs.io/en/latest/installation.html)
- [Pillow plugin](https://pillow-heif.readthedocs.io/en/latest/pillow-plugin.html)
- [Using HeifFile](https://pillow-heif.readthedocs.io/en/latest/heif-file.html)
- [Image modes](https://pillow-heif.readthedocs.io/en/latest/image-modes.html)
- [Options](https://pillow-heif.readthedocs.io/en/latest/options.html)
- [Examples](https://github.com/bigcat88/pillow_heif/tree/master/examples)
- [Contribute](https://github.com/bigcat88/pillow_heif/blob/master/.github/CONTRIBUTING.md)
- [Discussions](https://github.com/bigcat88/pillow_heif/discussions)
- [Issues](https://github.com/bigcat88/pillow_heif/issues)
- [Changelog](https://github.com/bigcat88/pillow_heif/blob/master/CHANGELOG.md)
### Wheels
| **_Wheels table_** | macOS<br/>Intel | macOS<br/>Silicon | Windows<br/> | musllinux* | manylinux* |
|--------------------|:---------------:|:-----------------:|:------------:|:----------:|:----------:|
| CPython 3.8 | ✅ | N/A | ✅ | ✅ | ✅ |
| CPython 3.9 | ✅ | ✅ | ✅ | ✅ | ✅ |
| CPython 3.10 | ✅ | ✅ | ✅ | ✅ | ✅ |
| CPython 3.11 | ✅ | ✅ | ✅ | ✅ | ✅ |
| CPython 3.12 | ✅ | ✅ | ✅ | ✅ | ✅ |
| CPython 3.13 | ✅ | ✅ | ✅ | ✅ | ✅ |
| PyPy 3.9 v7.3 | ✅ | ✅ | ✅ | N/A | ✅ |
| PyPy 3.10 v7.3 | ✅ | ✅ | ✅ | N/A | ✅ |
&ast; **x86_64**, **aarch64** wheels.

View File

@@ -0,0 +1,35 @@
_pillow_heif.cpython-310-x86_64-linux-gnu.so,sha256=P7KJjU_sgigcBXJRC1yQ5eBJSAeyjXzKYneB-aEyTRY,204913
pillow_heif-0.18.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
pillow_heif-0.18.0.dist-info/LICENSE.txt,sha256=niY18VWwCvWkbLLyybBSBy7FRtWYN-5078nLosu4Pz0,1546
pillow_heif-0.18.0.dist-info/LICENSES_bundled.txt,sha256=IAzhZEIafsbwdC3KzxAFUYR617FqxY5vMN0PNv2Pz34,1015
pillow_heif-0.18.0.dist-info/METADATA,sha256=sUYD0irbeQ0KcpKTP076_7gp6wFHnNxrdGl-8954rpM,9828
pillow_heif-0.18.0.dist-info/RECORD,,
pillow_heif-0.18.0.dist-info/WHEEL,sha256=6weyQ6akTiVq9RhNVy8xRkgIug5eBaa_QDaeCC7g4HM,151
pillow_heif-0.18.0.dist-info/top_level.txt,sha256=iX-kTFDQPRwRFsqj5c6PgZgetruemjt6Xkw9Dgb978o,25
pillow_heif-0.18.0.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
pillow_heif.libs/libaom-a0b51804.so.3.6.1,sha256=R2uTdjllRcMn8gk5tU87qrHdmYUZpkFDud42eNfnUfo,7805961
pillow_heif.libs/libde265-ab527a81.so,sha256=maJhHb-GLPCsOc0tdlOrF6yiZVyfMc1whFuvy1wUAeY,1218393
pillow_heif.libs/libheif-8c818a50.so.1.18.1,sha256=38Hb-t7Qclx0UxSVGzRxeUaf1eaISvHMIiOIhbplwAY,1431481
pillow_heif.libs/libx265-3b50b725.so.204,sha256=EMx9IxWKIFqSvw2PfQtaD8sqLh6XrDvKUuswxD7GCrg,21626161
pillow_heif/AvifImagePlugin.py,sha256=MVq-VlOVLygXsmO69L-OWWSzhS4nUJgbS6fNy0etIpc,136
pillow_heif/HeifImagePlugin.py,sha256=kaauUwY0yq1CcomzIZogx2UMVTUm_Fm6QMIp0bQIS8w,135
pillow_heif/__init__.py,sha256=DMlE1MXdo7TkBeQXUx24d-DqDW9S8UW1nj_6ERs8ZzA,661
pillow_heif/__pycache__/AvifImagePlugin.cpython-310.pyc,,
pillow_heif/__pycache__/HeifImagePlugin.cpython-310.pyc,,
pillow_heif/__pycache__/__init__.cpython-310.pyc,,
pillow_heif/__pycache__/_deffered_error.cpython-310.pyc,,
pillow_heif/__pycache__/_lib_info.cpython-310.pyc,,
pillow_heif/__pycache__/_version.cpython-310.pyc,,
pillow_heif/__pycache__/as_plugin.cpython-310.pyc,,
pillow_heif/__pycache__/constants.cpython-310.pyc,,
pillow_heif/__pycache__/heif.cpython-310.pyc,,
pillow_heif/__pycache__/misc.cpython-310.pyc,,
pillow_heif/__pycache__/options.cpython-310.pyc,,
pillow_heif/_deffered_error.py,sha256=e02pV5yE-TGboDG5YTYLEgrfD3o0FnEGpK5WBJUpv_g,325
pillow_heif/_lib_info.py,sha256=-xrH5BOCZy-nMwM6xJO1f0SlL2r6CIJtubwoQ5quZOI,1001
pillow_heif/_version.py,sha256=lhrhjfEMXIqYryOpjvlm62tY_zfovBEvXeNBjliIiTo,62
pillow_heif/as_plugin.py,sha256=9IJqlLycdJ2CiyiYVe8WXlXrkpCfuwlS5kA21INLTS0,9595
pillow_heif/constants.py,sha256=ARH-qzr8dcMutoeUN1y7N8BjdHDxTWt7MI8GZqgDulc,5065
pillow_heif/heif.py,sha256=gye6Nfm6wTkKKaa51u5KtxWSSqyb5ouC1PrOnuopIlM,22832
pillow_heif/misc.py,sha256=Eqs1CJCEe8H-RyOsoohDgbbOdrB5VSbjluqFpf4EFok,20542
pillow_heif/options.py,sha256=XhOSA3JJhpWQC1sqIjW68AG67AUSe1KZbgMNl87PESQ,2816

View File

@@ -0,0 +1,6 @@
Wheel-Version: 1.0
Generator: setuptools (71.1.0)
Root-Is-Purelib: false
Tag: cp310-cp310-manylinux_2_17_x86_64
Tag: cp310-cp310-manylinux2014_x86_64

View File

@@ -0,0 +1,2 @@
_pillow_heif
pillow_heif

View File

@@ -0,0 +1 @@