Générer un flyer en ligne de commande
Pour l’association
Lanvellec en Fête
j’ai eu à générer un flyer
pour la communication de l’animation prévue les 17 et 18 octobre 2026.
Le flyer doit être généré à partir de l’affiche existante.
L’outil Imagemagick permet de manipuler les images (conversion de format, redimensionner l’image, rajouter une annotation, …), dans cet article la suite des commandes utilisées pour générer le flyer à partir de l’affiche.
L’affiche est au format A4, c’est un fichier PNG de 45 Mo et d’une définition de 5946 x 9000 :
2018 $ file affiche-LEF-2026.png
affiche-LEF-2026.png: PNG image data, 5946 x 9000, 8-bit/color RGBA, non-interlaced
2019 $ du -hs affiche-LEF-2026.png
45M affiche-LEF-2026.png
Les dimensions des formats sont définies dans la norme
ISO 216.
Chacune des tailles définie contient 2 éléments de la taille suivante :
- A0 contient 2 A1
- A1 contient 2 A2
- …
Dans une page au format A4 on pourra donc y placer 4 images au format A6.
La procédure retenue est donc de générer une image au format A6 à partir de l’affiche puis de placer 4 fois cette vignette A6 sur une page au format A4, elles seront découpées au massicot.
Prérequis
Sur une distribution Debian il faut installer :
apt install imagemagick
Image au format A6
Pour obtenir l’image au format A6 on utilise la commande :
convert affiche-LEF-2026.png -quality 50 -resize 1240x1748 -border 10 A6-bordure.jpg
Le paramètre quality 50 va réduire la définition de l’image et donc la
taille du fichier de sotie.
Avec -quality 50 on obtient un fichier de sortie de 264 Ko, sans ce
paramètre il fait 744 Ko.
Le paramètre -resize 1240x1748 définit la taille de l’image de sortie.
Il est également possible d’utiliser l’option -page a6 mais lors de
mes essais le fichier résultat était beaucoup plus gros.
L’option -bordure 10 va rajouter un cadre de largeur 10 autour de
l’image. Après assemblage dans une feuille A4, cela facilitera le
découpage des flyers.
Assemblage des images A6
Pour créer le flyer, on va créer l’équivalent d’un tableau de 2 colonnes et 2 lignes, soit 4 cellules contenant chacune une image au format A6.
Pour cet assemblage, il faut utiliser 2 commandes :
- placer 2 images A6 cote à cote :
convert A6-bordure.jpg A6-bordure.jpg +append A6-2.jpg
- dupliquer les 2 images A6
convert A6-2.jpg A6-2.jpg -append flyer.jpg
Le paramètre append permet de rajouter un élément après un autre.
Il est utilisé de 2 façons :
-
+append: place les éléments sur la même ligne -
-append: place les éléments sur 2 lignes différentes

Automatisation de la procédure
Pour faciliter la génération d’un flyer, rien de mieux qu’un petit script bash.
#!/bin/bash
# -*- coding: UTF8 -*-
# Auteur : https://www.saintcarre.fr/saintcarre/
# Licence : CC BY-NC 4.0 https://creativecommons.org/licenses/by-nc/4.0/legalcode.fr
#========================================
# Variables
Objet="Génére un flyer à partir d'une image au format A4 ou supérieure"
Syntaxe="$0 <fichier image>"
Qual=50
bord=10
FicA6="A6-bordure.jpg"
Fic2A6="A6-2.jpg"
FicOut="My-flyer.jpg"
#========================================
# Affichage entete
clear
echo -e "\n\t$0"
echo -e "\n\t${Objet}"
echo -e "\tSyntaxe : ${Syntaxe}\n\n"
#========================================
# Controle presence du parametre requis
FicIn=$1
if [ "${FicIn}" == "" ]
then
echo -e "-I-> Paramètre absent"
echo -e "-I-> Nom du fichier image : \c"
read FicIn
if [ "${FicIn}" == "" ]
then
echo -e "-I-> toujours vide .... salut.\n"
exit 1
fi
else
echo -e "-I-> FicIn : ${FicIn} "
fi
if [ -f "${FicIn}" ]
then
echo -e "-I-> Le fichier "${FicIn}" existe."
else
echo -e "-E-> Le fichier "${FicIn}" n'existe pas.\n"
exit 1
fi
# Nom du fichier de sortie
FicOut="${FicIn%.*}-flyer.jpg"
#echo -e "\n-D-> Nom du fichier de sortie : ${FicOut}"
# Création du flyer
echo -e "\n-I-> Création de l'image au format A6 avec une bordure de ${bord}"
#convert ${FicIn} -quality ${Qual} -page a6 -border ${bord} ${FicA6}
convert ${FicIn} -quality ${Qual} -resize 1240x1748 -border ${bord} ${FicA6}
echo -e "-I-> Assemblage de 2 image A6"
convert ${FicA6} ${FicA6} +append ${Fic2A6}
echo -e "-I-> Assemblage final"
convert ${Fic2A6} ${Fic2A6} -append ${FicOut}
echo -e "\n\n-I-> Nom du flyer : ${FicOut} \n"
Saint Carré