Ce script Python permet de convertir en masse des images TIFF ou JPEG vers le format JPEG2000. Il s'appuie sur la librairie Image-processing développée par la Bodleian Library (Oxford).
Son usage premier est de convertir des images source haute résolution dans un format permettant leur diffusion optimale sur le Web, conformément à l'API Image de IIIF (International Image Interoperability Framework).
-
prend un dossier en entrée (
input_dir
) et convertit toutes les images en JPEG2000 dans un dossier de sortie (output_dir
). -
supporte à la fois les codecs Kakadu (propriétaire) et OpenJPEG (open source)
-
le profil d'encodage utilisé pour la conversion est le même que celui utilisé par la Bodleian ("lossless" par défaut) : https://image-processing.readthedocs.io/en/latest/jp2_profile.html
-
valide avec Jpylyzer chaque image JPEG2000 créée
-
conserve une partie des métadonnées embarquées (XMP, Dublin Core...). Il est possible d'extraire l'intégralité des métadonnées de l'image dans un fichier XML à part, car certaines métadonnées, notamment Exif, ne sont pas reportées dans le JPEG2000)
-
s'efforce de conserver également dans le JPEG2000 le profil colorimétrique de l'image source
Pour plus de détails sur l'encodage en JPEG2000, lire la documentation de la librairie Image-processing : https://image-processing.readthedocs.io/en/latest/index.html
Ce script a été testé avec Python 3.
Il repose sur la librairie Image-processing : https://github.com/bodleian/image-processing
Les autres dépendances sont aussi celles de Image-processing :
-
Exiftool (à installer séparément)
-
Pillow (installé automatiquement via
pip install
) -
Jpylyzer (installé automatiquement via
pip install
)
Voir le détail des dépendances de Image-processing : https://image-processing.readthedocs.io/en/latest/introduction.html#installation
$ apt install exiftool liblcms2-2 liblcms2-dev libjpeg62-turbo libjpeg62-turbo-dev libtiff5 libtiff5-dev
- OpenJPEG : https://github.com/uclouvain/openjpeg/blob/master/INSTALL.md
- Kakadu : cf. documentation
$ python3 --version
$ which python3
$ apt install python3-pip
$ pip3 install virtualenvwrapper
$ nano ~/.bash_profile
---
# virtualenv
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh
---
$ source ~/.bash_profile
$ mkvirtualenv --python=/usr/bin/python3 {VirtualEnvName}
$ source activate {VirtualEnvName}
$ git clone https://github.com/regisrob/convert_jp2.git
$ cd convert_jp2
$ pip3 install -r requirements.txt
$ python convert.py -h
usage: convert.py [-h] -i INPUT_DIR -o OUTPUT_DIR [--with-openjpeg]
[--with-kakadu] [-b BINARY_PATH] [--validate-jp2]
optional arguments:
-h, --help show this help message and exit
-i INPUT_DIR, --input_dir INPUT_DIR
Choose input directory
-o OUTPUT_DIR, --output_dir OUTPUT_DIR
Choose output directory
--with-openjpeg Select OpenJPEG encoder
--with-kakadu Select Kakadu encoder (default)
-b BINARY_PATH, --binary-path BINARY_PATH
Base path to openjpeg or kakadu executables (default:
/usr/local/bin
--validate-jp2 Validate generated JP2 files?