#1 Le 19/08/2019, à 14:58
- thyguy
convertir des images en .heic en .jpg par lot [résolu]
Bonjour,
Voici mon problème :
Lorsque je charge de photos provenant d'un iphone (7 ), elles ont l’extension .heic et non l'extension .jpg.
J'ai vu qu'il existe un outil en ligne de commande pour convertir HEIC:
Il s'installe ainsi :
sudo apt install libheif-examples
pour convertir une image .heic en .jpg, il faut se placer dans son répertoire et saisir ceci (exemple pour IMG1472.heic qu'on veut convertir en IMG1472.jpg) :
heif-convert IMG1472.heic IMG1472.jpg
Maintenant, sachant que cette commande fonctionne pour une image, j'aimerais savoir quelle commande saisir pour que, non seulement cette image .heic puisse être convertie en .jpg, mais toutes les images du même répertoire.
Merci pour vos suggestions.
Cordialement
Thyguy
Dernière modification par thyguy (Le 19/08/2019, à 16:23)
Kernel : 4.15.0-54-generic x86_64 bits: 64 gcc: 7.4.0 ; Desktop : Cinnamon 3.8.9 (Gtk 3.22.30-1ubuntu3) dm: lightdm Distro: Linux Mint 19 Tara ; Device : P Compaq Elite 8300 SFF ; Graphics : Intel Xeon E3-1200 v2/3rd ; CPU : Quad core Intel Core i5-3570
Hors ligne
#2 Le 19/08/2019, à 15:14
- nam1962
Re : convertir des images en .heic en .jpg par lot [résolu]
Genre çà ?
cd le_bon_répertoire
for file in *.heic; do heif-convert $file ${file/%.heic/.jpg}; done
(Ce sera peut être HEIC ou Heic)
[ Modéré ]
Hors ligne
#3 Le 19/08/2019, à 15:22
- thyguy
Re : convertir des images en .heic en .jpg par lot [résolu]
Bravo cela marche !!!!
J'ai utilisé .heic et non . HEIC car c'est ce qui apparraissait comme extension dans mon répertoire.
Cerise sur le gâteau, comment supprimer les images en .heic du répertoire pour ne garder que les images en .jpg ?
Un grand merci pour cette réponse à nam 1962 !!!!
Thyguy
Kernel : 4.15.0-54-generic x86_64 bits: 64 gcc: 7.4.0 ; Desktop : Cinnamon 3.8.9 (Gtk 3.22.30-1ubuntu3) dm: lightdm Distro: Linux Mint 19 Tara ; Device : P Compaq Elite 8300 SFF ; Graphics : Intel Xeon E3-1200 v2/3rd ; CPU : Quad core Intel Core i5-3570
Hors ligne
#4 Le 19/08/2019, à 15:40
- nam1962
Re : convertir des images en .heic en .jpg par lot [résolu]
Toujours en étant dans le bon répertoire :
rm *.heic
Ce genre de commande est à passer séparément (et après s'être assuré qu'on a fait ce qu'on voulait avant!)
[ Modéré ]
Hors ligne
#5 Le 19/08/2019, à 16:17
- thyguy
Re : convertir des images en .heic en .jpg par lot [résolu]
Merci beaucoup pour ce nouveau conseil qui fonctionne.
(tout ceci m'aide à appréhender de nouvelles choses sur le terminal)
Thyguy
Kernel : 4.15.0-54-generic x86_64 bits: 64 gcc: 7.4.0 ; Desktop : Cinnamon 3.8.9 (Gtk 3.22.30-1ubuntu3) dm: lightdm Distro: Linux Mint 19 Tara ; Device : P Compaq Elite 8300 SFF ; Graphics : Intel Xeon E3-1200 v2/3rd ; CPU : Quad core Intel Core i5-3570
Hors ligne
#6 Le 28/09/2019, à 19:13
- alain_111
Re : convertir des images en .heic en .jpg par lot [résolu]
Alors là, MERCI !!!
C'est exactement ce que je cherchais, pour convertir les 7500 et quelques photos provenant de l'iPhone de ma fille.
On galérait depuis des jours à chercher un logiciel qui ferait ça sur son ordinateur (Windows 10) quand je me suis dit que ça pouvait peut-être se faire sur le mien (Linux Ubuntu 18.04).
Je sais pas pourquoi j'ai pas pensé à ça plus tôt.
Et bingo !
Ça fonctionne parfaitement, c'est juste excellent.
On remerciera jamais assez tous les contributeurs sur ce forum !!!
Hors ligne
#7 Le 28/09/2019, à 19:35
- nam1962
Re : convertir des images en .heic en .jpg par lot [résolu]
(...)
On galérait depuis des jours à chercher un logiciel qui ferait ça sur son ordinateur (Windows 10) quand je me suis dit que ça pouvait peut-être se faire sur le mien (Linux Ubuntu 18.04).
Je sais pas pourquoi j'ai pas pensé à ça plus tôt.
(...)
Parce que tu n'as pas eu la fessée.
Qu'est ce qui te prenait d'être help desk gratos pour Microsoft ? (pour un truc qu'ils savent pas faire en plus)
...et surtout que fait ta fille sur cette bouse ?
En cas de doute, un peu de lecture : https://privacytools.dreads-unlock.fr/#win10
[ Modéré ]
Hors ligne
#8 Le 28/09/2019, à 20:34
- alain_111
Re : convertir des images en .heic en .jpg par lot [résolu]
Et je sais bien tout ça...
;+)
Mais je n'ai plus mon mot à dire, là, et elle a un ordinateur sous W10 + un iPhone…
Donc, je lui ai préparé et configuré son Windows 10 du mieux possible, viré toutes les applications préinstallées, désactivé tout ce qui sert à rien avec W10Privacy : https://www.winprivacy.de/english-home/
Et là, ça nous avait bien énervé ces fichiers .heic à la con…
Mais heureusement que Ubuntu-fr.org est là !!!!!!
Hors ligne
#9 Le 29/09/2019, à 07:51
- docteur_marc
Re : convertir des images en .heic en .jpg par lot [résolu]
sous Win 10 et IOS
tu a XNVIEW et son convertisseur XnConvert
https://www.xnview.com/fr/xnconvert/
j'utilise cela sous Windows depuis + de 10 ans
Hors ligne
#10 Le 29/09/2019, à 17:59
- LeoMajor
Re : convertir des images en .heic en .jpg par lot [résolu]
bonjour,
au cas où le type mime ne serait pas défini dans le paquet libheif-examples ??
cat newmagic
0x04 bequad 0x6674797068656963 Heic
!:mime image/heic
ou variante plus simple
cat mymagic
0x04 string ftypheic Heic
!:mime image/heic
file -i -m newmagic *.{heic,HEIC,Heic}
citrouille.heic: image/heic; charset=binary
citron.HEIC: image/heic; charset=binary
citron.Heic: image/heic; charset=binary
mv citron.Heic chocolat
file -m newmagic -bi chocolat
image/heic; charset=binary
Hors ligne
#11 Le 01/10/2019, à 14:38
- moko138
Re : convertir des images en .heic en .jpg par lot [résolu]
Genre çà ?
cd le_bon_répertoire for file in *.heic; do heif-convert $file ${file/%.heic/.jpg}; done
(Ce sera peut être HEIC ou Heic)
NON.
Cette commande ne convertit pas les fichiers comportant des espaces dans leurs noms.
Et si, derrière, vous avez vraiment exécuté un rm *.heic, il n'y a plus qu'à espérer que l'importante consigne, malencontreusement mise entre parenthèses - pourquoi ? -
(et après s'être assuré qu'on a fait ce qu'on voulait avant!)
ait été correctement appliquée.
Sans quoi, les *heic ont été supprimés, même ceux qui n'avaient pas été convertis.
= =
Je propose (avec récursivité) :
cd le-bon-répertoire && find . -type f -iname '*.heic' -print0 | xargs -0 heif-convert
ou sans récursivité :
cd le-bon-répertoire && find . -maxdepth 1 -type f -iname '*.heic' -print0 | xargs -0 heif-convert
==============================
La première partie marche impeccablement :
moko@pc:~/bureau/test3$ find ~/bureau/test2 -type f -iname '*.heic' -print0
/home/moko/bureau/test2/1_autumn_1440x960.HEIC/home/moko/bureau/test2/2_autumn_1440x960.Heic/home/moko/bureau/test2/3 d'autumn 1440x960.heicmoko@pc:~/bureau/test3$
À vous de tester la commande complète, puisque je ne trouve ni le paquet pour ma vieille distribution ni le man pour aucune version d'Ubuntu.
= =
Remarque
Faute du paquet ad hoc, j'ai testé une formule équivalente pour convertir les .png en .jpg :
find ~/bureau/test3 -type f -iname '*.png' -print0 | xargs -0 mogrify -format jpg
Ça marche et ça donne :
moko@pc:~$ ls -lAR ~/bureau/test3
/home/moko/bureau/test3:
total 128
-rw-r--r-- 1 moko moko 12648 oct. 1 15:15 123.jpg
-rw-r--r-- 1 moko moko 66469 oct. 1 13:06 123.Png
-rw-r--r-- 1 moko moko 3756 oct. 1 15:15 456.jpg
-rw-r--r-- 1 moko moko 14465 oct. 1 13:06 456.PNG
-rw-r--r-- 1 moko moko 3458 oct. 1 15:15 photo d'ânes gris.jpg
-rw-r--r-- 1 moko moko 15414 oct. 1 13:06 photo d'ânes gris.png
drwxr-xr-x 2 moko moko 4096 oct. 1 15:15 png
/home/moko/bureau/test3/png:
total 20
-rw-r--r-- 1 moko moko 3458 oct. 1 15:15 images d'agneaux tavelés.jpg
-rw-r--r-- 1 moko moko 15414 oct. 1 13:06 images d'agneaux tavelés.png
moko@pc:~$
On constate que les espaces et les apostrophes ont été correctement traitées.
%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel : À la découverte de dcraw
Hors ligne
#12 Le 01/10/2019, à 14:46
- Postmortem
Re : convertir des images en .heic en .jpg par lot [résolu]
Salut,
Pas besoin de find, il faut juste penser aux guillemets ; en reprenant la commande de nam1962, ça donne donc :
cd le_bon_répertoire
for file in *.heic; do heif-convert "$file" "${file/%.heic/.jpg}"; done
Edit :
Et si on veut que ça descende dans les sous-répertoires :
cd le_bon_répertoire
shopt -s globstar
for file in **/*.heic; do heif-convert "$file" "${file/%.heic/.jpg}"; done
Dernière modification par Postmortem (Le 01/10/2019, à 14:49)
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#13 Le 01/10/2019, à 15:35
- moko138
Re : convertir des images en .heic en .jpg par lot [résolu]
Merci Postmortem !
Mais j'ai l'impression que ta commande traite exclusivement les fichiers *.heic dont l'extension est toute en minuscules.
Je me trompe ?
%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel : À la découverte de dcraw
Hors ligne
#14 Le 01/10/2019, à 16:16
- Postmortem
Re : convertir des images en .heic en .jpg par lot [résolu]
Oui, tu as raison.
Pour que la casse ne soit pas prise en compte :
shopt -s globstar nocasematch nocaseglob
for file in /le/bon/répertoire/**/*.heic; do heif-convert "$file" "${file/%.heic/.jpg}"; done
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#15 Le 01/10/2019, à 16:56
- moko138
Re : convertir des images en .heic en .jpg par lot [résolu]
Super !
Merci Postmortem !
%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel : À la découverte de dcraw
Hors ligne
#16 Le 01/10/2019, à 17:49
- moko138
Re : convertir des images en .heic en .jpg par lot [résolu]
Euh...
Si je tente une conversion de .png en .jpg, ça ne traite que les .png en minuscules :
moko@pc:~/bureau/test31$ shopt -s globstar nocasematch nocaseglob
moko@pc:~/bureau/test31$
moko@pc:~/bureau/test31$ for file in ~/bureau/test31/**/*.png; do convert "$file" "${file/%.png/.jpg}"; done
moko@pc:~/bureau/test31$
moko@pc:~/bureau/test31$ ls -lAR
.:
total 108
-rw-r--r-- 1 moko moko 66469 oct. 1 18:34 123.Png
-rw-r--r-- 1 moko moko 14465 oct. 1 18:34 456.PNG
-rw-r--r-- 1 moko moko 3458 oct. 1 18:34 photo d'ânes gris.jpg
-rw-r--r-- 1 moko moko 15414 oct. 1 13:06 photo d'ânes gris.png
drwxr-xr-x 3 moko moko 4096 oct. 1 16:31 png2
./png2:
total 20
-rw-r--r-- 1 moko moko 15414 oct. 1 18:34 images d'agneaux tavelés.PNG
drwxr-xr-x 2 moko moko 4096 oct. 1 18:34 rep3
./png2/rep3:
total 20
-rw-r--r-- 1 moko moko 3458 oct. 1 18:34 les chats tigrés d'Annie.jpg
-rw-r--r-- 1 moko moko 15414 oct. 1 13:06 les chats tigrés d'Annie.png
moko@pc:~/bureau/test31$
%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel : À la découverte de dcraw
Hors ligne
#17 Le 01/10/2019, à 18:02
- moko138
Re : convertir des images en .heic en .jpg par lot [résolu]
Bon, ça marche avec ça :
shopt -s globstar nocasematch nocaseglob
for file in ~/bureau/test31/**/*.png; do convert "$file" "${file/%.[pP][nN][gG]/.jpg}"; done
Donc j'imagine que pour les .HeiC, l'alternative à
cd le-bon-répertoire && find . -type f -iname '*.heic' -print0 | xargs -0 heif-convert
est
shopt -s globstar nocasematch nocaseglob
for file in /le/bon/répertoire/**/*.heic; do heif-convert "$file" "${file/%.[hH][eE][iI][cC]/.jpg}"; done
%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel : À la découverte de dcraw
Hors ligne
#18 Le 01/10/2019, à 19:32
- Postmortem
Re : convertir des images en .heic en .jpg par lot [résolu]
Tu as quelle version de bash ?
Quand j'ai testé, je n'avais utilisé que nocaseglob au départ et ça me donnait le même résultat que toi. Et quand j'ai rajouté nocasematch, la substitution était bien faite quelque soit la casse.
Edit : si tu es obligé d'utiliser les crochets, nocasematch ne sert à rien.
Dernière modification par Postmortem (Le 01/10/2019, à 19:33)
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#19 Le 01/10/2019, à 19:35
- kamaris
Re : convertir des images en .heic en .jpg par lot [résolu]
Oui, ça doit être une question de version de bash :
This is a terse description of the new features added to bash-4.4 since
the release of bash-4.3. As always, the manual page (doc/bash.1) is
the place to look for complete descriptions.
[…]
n. GLOBIGNORE, the pattern substitution word expansion, and programmable
completion match filtering now honor the value of the `nocasematch' option.
@moko138 : Ne serais-tu pas en bash 4.3 (sous ubuntu 16.04 peut-être, comme pingouinux ici : https://forum.ubuntu-fr.org/viewtopic.p … #p22147155 ?)
Hors ligne
#20 Le 01/10/2019, à 22:25
- moko138
Re : convertir des images en .heic en .jpg par lot [résolu]
Bien vu, les gars ! La version de bash avec laquelle je tourne en ce moment est la 4.2.
%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel : À la découverte de dcraw
Hors ligne
#21 Le 03/02/2020, à 18:19
- Launay
Re : convertir des images en .heic en .jpg par lot [résolu]
Merci j'ai converti mes images .HEIC en .JPG
Hors ligne
#22 Le 31/01/2021, à 13:05
- charles8
Re : convertir des images en .heic en .jpg par lot [résolu]
Très bien Nam, EXCELLENT!!!!
Hors ligne
#23 Le 13/05/2021, à 21:59
- Vu
Re : convertir des images en .heic en .jpg par lot [résolu]
Merci, la discussion m'a bien aidé pour convertir des photos issues d'un iPhone.
Ubuntu 12.04
Hors ligne
#24 Le 14/05/2021, à 09:50
- Tawal
Re : convertir des images en .heic en .jpg par lot [résolu]
Hello,
Donc j'imagine que pour les .HeiC, l'alternative à
cd le-bon-répertoire && find . -type f -iname '*.heic' -print0 | xargs -0 heif-convert
est
shopt -s globstar nocasematch nocaseglob for file in /le/bon/répertoire/**/*.heic; do heif-convert "$file" "${file/%.heic/.jpg}"; done
En supposant la bonne version de bash.
Si je puis me permettre,ces 2 versions sont "équivalentes" dans le sens où le résultat est strictement identique.
Mais pas dans le fonctionnement/traitement.
Le boucle for va traiter un à un les fichiers trouvés par le glob et lancer un processus heif-convert à chaque itération. Ce qui peut être lent avec de nombreux fichiers à traiter.
La solution find est pas mal non plus et plus efficiente si la commande heif-convert peut prendre plusieurs arguments et donc du coup lance un seul processus heif-convert pour plusieurs fichiers. Ce qui la rend plus rapide sur de grand nombres de fichiers à traiter.
Et la commande find peut prendre une autre forme (si la commande heif-convert prend plusieurs arguments) :
cd /le/bon/répertoire/ && find . -type f -iname '*.heic' -execdir heif-convert '{}' \+
Ce qui évite un pipe
J'espère n'avoir pas dit de con@#!$%?
Edit:
si la commande heif-convert ne peut pas traiter plusieurs fichiers à la fois, alors les 2 versions sont équivalentes, sauf sur l'ordre de traitement des fichiers (qui peut être contrôlé par find).
Dernière modification par Tawal (Le 14/05/2021, à 09:55)
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
En ligne
#25 Le 20/08/2022, à 23:35
- Panorama71
Re : convertir des images en .heic en .jpg par lot [résolu]
Bonjour;
Lorsque je me place sur le bon répertoire et que j'exécute j'ai le message "Input file is not an HEIF/AVIF file"...
Et quand j'exécute "for file in *.heic; do heif-convert $file ${file/%.heic/.jpg}; done", seules quelque photos sont converties....
Merci pour votre éventuelle aide...
Hors ligne