# Manipulation d'image et de vidéo à l'aide d'outils en ligne de commandes et de scripts
## Introduction
Pourquoi utiliser la ligne de commande pour manipuler des images ou des vidéos ?
![](flickr/47151962531_9b9c400b47_z.jpg)
"[Girl blowing question marks...](https://www.flickr.com/photos/79157069@N03/47151962531/)" ([CC BY 2.0](https://creativecommons.org/licenses/by/2.0/)) by [Matthew Paul Argall](https://www.flickr.com/people/79157069@N03/)
## Introduction
- Télécharger des images ou des vidéos depuis une page web
- Pour pouvoir effectuer des traitements massifs sur des images
GNU Wget est un client pour les protocoles FTP, HTTP et HTTPS. Il est entre autre utile pour extraire toutes les images d'un certain format d'une page web. Il est disponible sous la licence GPL.
- [Site officiel]()
### ExifTool
ExifTool est un logiciel qui permet de manipuler les métadonnées dans des fichiers images. L'installation ne se fait pas par un gestionnaires de paquets, mais en suivant les instructions sur le site web.
Imagemagick sert à créer, modifier, composer et convertir des images matricielles (bitmaps). C'est un logiciel libre sous une licence permissive de type [BSD 2Clause](https://spdx.org/licenses/BSD-2-Clause.html)
- [Site officiel](http://www.imagemagick.org/)
### FFmpeg
FFmpeg permet d'enregistrer, de convertir, de diffuser de l'audio et de la vidéo. Il est disponible sous la licence LGPL.
- [Site officiel](https://ffmpeg.org/legal.html)
### Inkscape
Inkscape est un logiciel bien connu pour éditer graphiquement des images vectorielles. Mais, il est aussi possible de l'utiliser depuis la ligne de commande.
Comme ces outils sont très polyvalents et comprennent de nombreux paramètres et fonctionnalités, nous allons nous concentrer sur un certain nombre de scénarios à réaliser
-
## Scénario 1
Dans ce scénario, nous allons télécharger les images d'une page web, les redimensionner, créer une mosaique et la publier en ligne sur un serveur d'image libre [Lutim](https://framagit.org/fiat-tux/hat-softwares/lutim).
Nous allons créer une mosaique de corneilles à partir des photos de la page [Animalphotos.info](http://animalphotos.info/a/topics/animals/birds/crows/)
### Téléchargement
Nous allons utiliser Wget pour télécharger les images
C'est ici qu'on utilise la commande convert d'ImageMagick
La première utilisation permet de convertir l'image en un seul pixel, ce qui permet de retrouver la couleur "moyenne" de l'image, que l'on va utiliser comme couleur d'arrière-plan `mainColor` pour l'image redimensionnée
La seconde utilisation permet d'effectuer la conversion de l'image selon les dimensions identifiées précédemment. L'image redimensionnée est centrée `-gravity center` dans le canevas de dimension spécifiées par `-extent` avec un arrière plan de couleur `mainColor`
Nous sommes maintenant prêts à créer une mosaique. Comme nous avons 20 images, nous creerons une mosaique d'une largeur de 5 images et d'une hauteur de 4 images.
for i in animation_bienvenue/*.svg; do echo "$i"; done
```
```
animation_bienvenue/bienvenue001.svg
animation_bienvenue/bienvenue002.svg
animation_bienvenue/bienvenue003.svg
animation_bienvenue/bienvenue004.svg
animation_bienvenue/bienvenue005.svg
animation_bienvenue/bienvenue006.svg
animation_bienvenue/bienvenue007.svg
animation_bienvenue/bienvenue008.svg
animation_bienvenue/bienvenue009.svg
```
Voici la 5e image
![](animation_bienvenue/bienvenue005.svg)
### Conversion
Pour convertir les les images vectorielles en images matricielles, nous allons utiliser l'interface en ligne de commandes de Inkscape
```bash
for i in animation_bienvenue/*.svg
do
inkscape -f "$i" -e "${i%.*}.png"
done
```
Voici la 5e image au format png
![](animation_bienvenue/bienvenue005.png)
### Ajout du logo
Nous ajouterons le logo de LinuQ aux images
![](animation_bienvenue/logo-linuq.png)
Pour ce faire, nous utiliserons l'option `-draw` de `convert` pour ajouter une image à la position désirée. Notez que pour nos besoins, l'image du logo est déjà redimensionnée à la largeur désirée.
```
for i in animation_bienvenue/bienvenue*.png
do
convert "$i" -gravity south -draw "image over 0,0 0,0 animation_bienvenue/logo-linuq.png" "${i%.*}-aveclogo.png"
done
```
Les paramètres suivants permettent de définir la transformation
-`-gravity south`: aligne les transformations au bas de l'image
-`image over 0,0 0,0`: Positionne l'image ajoutée au coin inférieur gauche