{{tag>convertir image heic jpg}}
====== Convertir les images au format HEIC vers JPG ======
Pour convertir en lot des images du format HEIC en JPG, on peut utiliser **ImageMagick** et sa commande CLI **convert** mais il doit être compilé avec le support du format HEIC.
Vérifier la version de convert disponible sur votre système:
convert --version
Version: ImageMagick 6.9.10-23 Q16 x86_64 20190101 https://imagemagick.org
Copyright: © 1999-2019 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC Modules OpenMP
Delegates (built-in): bzlib djvu fftw fontconfig freetype jbig jng jpeg lcms lqr ltdl lzma openexr pangocairo png tiff webp wmf x xml zlib
Ici la version proposée n'est pas compilée avec le support heic.
Le besoin étant ponctuel et pour ne pas conserver un grand nombre de fichiers et augmenter la surface d'attaque, j'ai fait le choix de construire un environnement temporaire via Docker pour compiler ImageMagick en version 7 avec le support du format HEIC. Après conversion des fichiers l'environnement pourra être détruit.
# Récupère l'image minimale ubuntu 20.04
docker pull ubuntu:focal
# Construction d'un environnement temporaire pour construire le binaire
docker container run -it --name convert_tmp ubuntu:focal /bin/bash
# Configure APT pour récupérer également les sources
# et mise a jour des listes de paquets
sed -Ei 's/^# deb-src /deb-src /' /etc/apt/sources.list
apt-get update
# Installation des outils de compilation
apt-get install wget build-essential autoconf libtool git-core
apt-get build-dep imagemagick libmagickcore-dev libde265 libheif
# Téléchargement et compilation des bibliothèques
#libde256
cd /usr/src
git clone https://github.com/strukturag/libde265.git
cd libde265/
./autogen.sh
./configure
make -j$(nproc)
make install
#libheif
cd /usr/src
git clone https://github.com/strukturag/libheif.git
cd libheif/
./autogen.sh
./configure
make -j$(nproc)
make install
# Compilation ImageMagick avec support HEIC
cd /usr/src/
wget https://www.imagemagick.org/download/ImageMagick.tar.gz
tar xf ImageMagick.tar.gz
cd ImageMagick-7*
./configure --with-heic=yes
make -j$(nproc)
make install
ldconfig
La version compilée dans l’environnement temporaire supporte à présent le format:
convert --version
Version: ImageMagick 7.1.0-37 Q16-HDRI x86_64 20104 https://imagemagick.org
Copyright: (C) 1999 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC HDRI OpenMP(4.5)
Delegates (built-in): bzlib djvu fontconfig freetype heic jbig jng jpeg lcms lqr lzma openexr pangocairo png tiff webp x xml zlib
Compiler: gcc (9.4)
# Sortie et arrêt du conteneur
exit
Créer une image à partir du conteneur:
docker container list -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
aac0197a9a46 ubuntu:focal "/bin/sh" About an hour ago Exited (0) About a minute ago convert_tmp
. . .
# Création image
docker commit aac0197a9a46 tnf/imagemagick:v7.1.0-heic
On peut à présent créer un conteneur utilisant notre image et monter le répertoire de travail contenant les fichiers à traiter:
# Création d'un conteneur, avec montage lié au dossier contenant les images à traiter:
docker container run -it --name img_converter -v /home/yoann/input/:/mnt tnf/imagemagick:v7.1.0-heic /bin/bash
# Depuis le conteneur une simple boucle for
# permet d'appeler convert sur l'ensemble des images du dossier.
# Les images converties sont ici créés dans le même dossier
cd /mnt
for f in *.HEIC;
do
convert "$f" "$f".jpeg
done
===== Références =====
* https://genijaho.dev/blog/how-to-add-support-for-heic-images-with-imagemagick-in-php
* https://eplt.medium.com/5-minutes-to-install-imagemagick-with-heic-support-on-ubuntu-18-04-digitalocean-fe2d09dcef1