diff options
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | python-pyheif.spec | 505 | ||||
| -rw-r--r-- | sources | 1 |
3 files changed, 507 insertions, 0 deletions
@@ -0,0 +1 @@ +/pyheif-0.7.1.tar.gz diff --git a/python-pyheif.spec b/python-pyheif.spec new file mode 100644 index 0000000..5512cbc --- /dev/null +++ b/python-pyheif.spec @@ -0,0 +1,505 @@ +%global _empty_manifest_terminate_build 0 +Name: python-pyheif +Version: 0.7.1 +Release: 1 +Summary: Python 3.6+ interface to libheif library +License: Apache Software License +URL: https://github.com/carsales/pyheif +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/f3/2f/0492ad16c6936944bf9575a789e2dd6af4a27eb2475a04fb02cf84b2a5db/pyheif-0.7.1.tar.gz +BuildArch: noarch + +Requires: python3-cffi + +%description +# pyheif +Python 3.6+ interface to [libheif](https://github.com/strukturag/libheif) library using CFFI + +*Note*: currently only reading is supported. + +## Installation + +### Simple installation - Linux (installs manylinux2014 wheel, doesn't work with Alpine) +``` +pip install --upgrade pip +pip install pyheif +``` + +### Installing from source - MacOS +``` +brew install libffi libheif +pip install git+https://github.com/carsales/pyheif.git +``` + +### Installing from source - Linux +``` +apt install libffi libheif-dev libde265-dev +``` +or +``` +yum install libffi libheif-devel libde265-devel +``` +then +``` +pip install git+https://github.com/carsales/pyheif.git +``` + +### Installing from source - Windows +``` +Sorry, not going to happen! +``` + +## Usage + +### Read the primary image of a HEIF encoded file + +The `pyheif.read(path_or_bytes)` function can be used to read the primary image of a HEIF encoded file. It can be passed any of the following: + +* A string path to a file on disk +* A `pathlib.Path` path object +* A Python `bytes` or `bytearray` object containing HEIF content +* A file-like object with a `.read()` method that returns bytes + +It returns a `HeifFile` object. + +```python +import pyheif + +# Using a file path: +heif_file = pyheif.read("IMG_7424.HEIC") +# Or using bytes directly: +heif_file = pyheif.read(open("IMG_7424.HEIC", "rb").read()) +``` + +### Converting to a Pillow Image object + +If your HEIF file contains an image that you would like to manipulate, you can do so using the [Pillow](https://pillow.readthedocs.io/) Python library. You can convert a `HeifFile` to a Pillow image like so: + +```python +from PIL import Image +import pyheif + +heif_file = pyheif.read("IMG_7424.HEIC") +image = Image.frombytes( + heif_file.mode, + heif_file.size, + heif_file.data, + "raw", + heif_file.mode, + heif_file.stride, + ) +``` + +*Note*: the `mode` property is passed twice - once to the `mode` argument of the `frombytes` method, and again to the `mode` argument of the `raw` decoder. + +You can now use any Pillow method to manipulate the file. Here's how to convert it to JPEG: + +```python +image.save("IMG_7424.jpg", "JPEG") +``` + +### Read the entire container within the HEIF file + +The `pyheif.open_container(path_or_bytes)` function can be used to read the HEIF container from a HEIF encoded file. It takes the same parameter as `pyheif.read()` + +It returns a `HeifContainer` object. + +## Objects + +### The HeifFile object + +The `HeifFile` has the following properties: + +* `mode` - the image mode, e.g. "RGB" or "RGBA" +* `size` - the size of the image as a `(width, height)` tuple of integers +* `data` - the raw decoded file data, as bytes +* `metadata` - a list of metadata dictionaries +* `color_profile` - a color profile dictionary +* `stride` - the number of bytes in a row of decoded file data +* `bit_depth` - the number of bits in each component of a pixel + +### The UndecodedHeifFile object + +This is a HEIF image that has not been decoded. Calling the `UndecodedHeifFile.load()` method will load the data and the object will become a `HeifFile` + +### The HeifContainer object + +The `HeifContainer` has the following properties: + +* `primary_image` - the `HeifTopLevelImage` object of the primary image in the file. +* `top_level_images` - a list of all `HeifTopLevelImage` objects in the file. + +### The HeifTopLevelImage object + +The `HeifTopLevelImage` has the following properties: + +* `id` - the id of the image +* `image` - the `UndecodedHeifFile` or `HeifFile` object of the image +* `is_primary` - is this the primary image in the container +* `depth_image` - the `HeifDepthImage` if there is one +* `auxiliary_images` - a list of `HeifAuxiliaryImage` objects + +### The HeifDepthImage object + +The `HeifDepthImage` has the following properties: + +* `id` - the id of the image +* `image` - the `UndecodedHeifFile` or `HeifFile` object of the image + +### The HeifAuxiliaryImage object + +The `HeifAuxiliaryImage` has the following properties: + +* `id` - the id of the image +* `image` - the `UndecodedHeifFile` or `HeifFile` object of the image +* `type` - a string indicating the type of auxiliary image + + + + + +%package -n python3-pyheif +Summary: Python 3.6+ interface to libheif library +Provides: python-pyheif +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-pyheif +# pyheif +Python 3.6+ interface to [libheif](https://github.com/strukturag/libheif) library using CFFI + +*Note*: currently only reading is supported. + +## Installation + +### Simple installation - Linux (installs manylinux2014 wheel, doesn't work with Alpine) +``` +pip install --upgrade pip +pip install pyheif +``` + +### Installing from source - MacOS +``` +brew install libffi libheif +pip install git+https://github.com/carsales/pyheif.git +``` + +### Installing from source - Linux +``` +apt install libffi libheif-dev libde265-dev +``` +or +``` +yum install libffi libheif-devel libde265-devel +``` +then +``` +pip install git+https://github.com/carsales/pyheif.git +``` + +### Installing from source - Windows +``` +Sorry, not going to happen! +``` + +## Usage + +### Read the primary image of a HEIF encoded file + +The `pyheif.read(path_or_bytes)` function can be used to read the primary image of a HEIF encoded file. It can be passed any of the following: + +* A string path to a file on disk +* A `pathlib.Path` path object +* A Python `bytes` or `bytearray` object containing HEIF content +* A file-like object with a `.read()` method that returns bytes + +It returns a `HeifFile` object. + +```python +import pyheif + +# Using a file path: +heif_file = pyheif.read("IMG_7424.HEIC") +# Or using bytes directly: +heif_file = pyheif.read(open("IMG_7424.HEIC", "rb").read()) +``` + +### Converting to a Pillow Image object + +If your HEIF file contains an image that you would like to manipulate, you can do so using the [Pillow](https://pillow.readthedocs.io/) Python library. You can convert a `HeifFile` to a Pillow image like so: + +```python +from PIL import Image +import pyheif + +heif_file = pyheif.read("IMG_7424.HEIC") +image = Image.frombytes( + heif_file.mode, + heif_file.size, + heif_file.data, + "raw", + heif_file.mode, + heif_file.stride, + ) +``` + +*Note*: the `mode` property is passed twice - once to the `mode` argument of the `frombytes` method, and again to the `mode` argument of the `raw` decoder. + +You can now use any Pillow method to manipulate the file. Here's how to convert it to JPEG: + +```python +image.save("IMG_7424.jpg", "JPEG") +``` + +### Read the entire container within the HEIF file + +The `pyheif.open_container(path_or_bytes)` function can be used to read the HEIF container from a HEIF encoded file. It takes the same parameter as `pyheif.read()` + +It returns a `HeifContainer` object. + +## Objects + +### The HeifFile object + +The `HeifFile` has the following properties: + +* `mode` - the image mode, e.g. "RGB" or "RGBA" +* `size` - the size of the image as a `(width, height)` tuple of integers +* `data` - the raw decoded file data, as bytes +* `metadata` - a list of metadata dictionaries +* `color_profile` - a color profile dictionary +* `stride` - the number of bytes in a row of decoded file data +* `bit_depth` - the number of bits in each component of a pixel + +### The UndecodedHeifFile object + +This is a HEIF image that has not been decoded. Calling the `UndecodedHeifFile.load()` method will load the data and the object will become a `HeifFile` + +### The HeifContainer object + +The `HeifContainer` has the following properties: + +* `primary_image` - the `HeifTopLevelImage` object of the primary image in the file. +* `top_level_images` - a list of all `HeifTopLevelImage` objects in the file. + +### The HeifTopLevelImage object + +The `HeifTopLevelImage` has the following properties: + +* `id` - the id of the image +* `image` - the `UndecodedHeifFile` or `HeifFile` object of the image +* `is_primary` - is this the primary image in the container +* `depth_image` - the `HeifDepthImage` if there is one +* `auxiliary_images` - a list of `HeifAuxiliaryImage` objects + +### The HeifDepthImage object + +The `HeifDepthImage` has the following properties: + +* `id` - the id of the image +* `image` - the `UndecodedHeifFile` or `HeifFile` object of the image + +### The HeifAuxiliaryImage object + +The `HeifAuxiliaryImage` has the following properties: + +* `id` - the id of the image +* `image` - the `UndecodedHeifFile` or `HeifFile` object of the image +* `type` - a string indicating the type of auxiliary image + + + + + +%package help +Summary: Development documents and examples for pyheif +Provides: python3-pyheif-doc +%description help +# pyheif +Python 3.6+ interface to [libheif](https://github.com/strukturag/libheif) library using CFFI + +*Note*: currently only reading is supported. + +## Installation + +### Simple installation - Linux (installs manylinux2014 wheel, doesn't work with Alpine) +``` +pip install --upgrade pip +pip install pyheif +``` + +### Installing from source - MacOS +``` +brew install libffi libheif +pip install git+https://github.com/carsales/pyheif.git +``` + +### Installing from source - Linux +``` +apt install libffi libheif-dev libde265-dev +``` +or +``` +yum install libffi libheif-devel libde265-devel +``` +then +``` +pip install git+https://github.com/carsales/pyheif.git +``` + +### Installing from source - Windows +``` +Sorry, not going to happen! +``` + +## Usage + +### Read the primary image of a HEIF encoded file + +The `pyheif.read(path_or_bytes)` function can be used to read the primary image of a HEIF encoded file. It can be passed any of the following: + +* A string path to a file on disk +* A `pathlib.Path` path object +* A Python `bytes` or `bytearray` object containing HEIF content +* A file-like object with a `.read()` method that returns bytes + +It returns a `HeifFile` object. + +```python +import pyheif + +# Using a file path: +heif_file = pyheif.read("IMG_7424.HEIC") +# Or using bytes directly: +heif_file = pyheif.read(open("IMG_7424.HEIC", "rb").read()) +``` + +### Converting to a Pillow Image object + +If your HEIF file contains an image that you would like to manipulate, you can do so using the [Pillow](https://pillow.readthedocs.io/) Python library. You can convert a `HeifFile` to a Pillow image like so: + +```python +from PIL import Image +import pyheif + +heif_file = pyheif.read("IMG_7424.HEIC") +image = Image.frombytes( + heif_file.mode, + heif_file.size, + heif_file.data, + "raw", + heif_file.mode, + heif_file.stride, + ) +``` + +*Note*: the `mode` property is passed twice - once to the `mode` argument of the `frombytes` method, and again to the `mode` argument of the `raw` decoder. + +You can now use any Pillow method to manipulate the file. Here's how to convert it to JPEG: + +```python +image.save("IMG_7424.jpg", "JPEG") +``` + +### Read the entire container within the HEIF file + +The `pyheif.open_container(path_or_bytes)` function can be used to read the HEIF container from a HEIF encoded file. It takes the same parameter as `pyheif.read()` + +It returns a `HeifContainer` object. + +## Objects + +### The HeifFile object + +The `HeifFile` has the following properties: + +* `mode` - the image mode, e.g. "RGB" or "RGBA" +* `size` - the size of the image as a `(width, height)` tuple of integers +* `data` - the raw decoded file data, as bytes +* `metadata` - a list of metadata dictionaries +* `color_profile` - a color profile dictionary +* `stride` - the number of bytes in a row of decoded file data +* `bit_depth` - the number of bits in each component of a pixel + +### The UndecodedHeifFile object + +This is a HEIF image that has not been decoded. Calling the `UndecodedHeifFile.load()` method will load the data and the object will become a `HeifFile` + +### The HeifContainer object + +The `HeifContainer` has the following properties: + +* `primary_image` - the `HeifTopLevelImage` object of the primary image in the file. +* `top_level_images` - a list of all `HeifTopLevelImage` objects in the file. + +### The HeifTopLevelImage object + +The `HeifTopLevelImage` has the following properties: + +* `id` - the id of the image +* `image` - the `UndecodedHeifFile` or `HeifFile` object of the image +* `is_primary` - is this the primary image in the container +* `depth_image` - the `HeifDepthImage` if there is one +* `auxiliary_images` - a list of `HeifAuxiliaryImage` objects + +### The HeifDepthImage object + +The `HeifDepthImage` has the following properties: + +* `id` - the id of the image +* `image` - the `UndecodedHeifFile` or `HeifFile` object of the image + +### The HeifAuxiliaryImage object + +The `HeifAuxiliaryImage` has the following properties: + +* `id` - the id of the image +* `image` - the `UndecodedHeifFile` or `HeifFile` object of the image +* `type` - a string indicating the type of auxiliary image + + + + + +%prep +%autosetup -n pyheif-0.7.1 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-pyheif -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Tue Apr 11 2023 Python_Bot <Python_Bot@openeuler.org> - 0.7.1-1 +- Package Spec generated @@ -0,0 +1 @@ +9162c75e756b2f0a2e879f0b0b070c0d pyheif-0.7.1.tar.gz |
