{{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