From b3858af36315e56c88485e3306fcdcc7437e40e9 Mon Sep 17 00:00:00 2001 From: Cedric Abonnel Date: Tue, 12 May 2026 00:51:18 +0200 Subject: [PATCH] support SVG upload, fix group www-data sur data/ --- .../files/cover.svg | 162 ++++++++++ .../index.md | 284 +++++++++--------- .../meta.json | 25 +- .../revisions/0001.md | 142 +++++++++ src/ArticleManager.php | 13 +- 5 files changed, 474 insertions(+), 152 deletions(-) create mode 100644 data/46f2f084-8dd8-497a-aef0-4728367ce753/files/cover.svg create mode 100644 data/46f2f084-8dd8-497a-aef0-4728367ce753/revisions/0001.md diff --git a/data/46f2f084-8dd8-497a-aef0-4728367ce753/files/cover.svg b/data/46f2f084-8dd8-497a-aef0-4728367ce753/files/cover.svg new file mode 100644 index 0000000..8bcdbc1 --- /dev/null +++ b/data/46f2f084-8dd8-497a-aef0-4728367ce753/files/cover.svg @@ -0,0 +1,162 @@ + +Conversion d'images en ligne de commande sous Linux +Une fenêtre de terminal au centre avec une commande ImageMagick, entourée d'images source à gauche en plusieurs formats et d'images converties à droite, illustrant la transformation par ligne de commande. + + + + + + + + + + + + + + + + + + + +JPG +4032 × 3024 + + + + + + + + + + + + + + + + + + + + + + + + + + +PNG +1920 × 1080 + + + + + + + + + + + + + + + + + + + + + +CR2 +RAW 24 MB + + + + + + + + + + + + + + + + + +cedrix@pve3 — bash + + +$ +magick +photo.jpg + -resize 1600x1600\> + -strip -quality 82 + web.jpg + +# conversion en cours... +✓ resize: 1600 × 1067 +✓ exif: stripped +✓ size: 4.2 MB → 218 KB + +$ + + + + + + + + + + + + + + + + + + + + + + + +WEBP +1600 × 1200 + + + + + + + + +JPG +1600 × 900 + + + + + + + + + +JPG +2048 × 1365 + + + +SOURCES +TERMINAL +SORTIES + + \ No newline at end of file diff --git a/data/46f2f084-8dd8-497a-aef0-4728367ce753/index.md b/data/46f2f084-8dd8-497a-aef0-4728367ce753/index.md index 74faf0c..6cc3720 100644 --- a/data/46f2f084-8dd8-497a-aef0-4728367ce753/index.md +++ b/data/46f2f084-8dd8-497a-aef0-4728367ce753/index.md @@ -1,142 +1,142 @@ -La manipulation d'images depuis le terminal est une de ces choses qu'on apprend une fois et qu'on utilise pour toujours. Pas besoin de GIMP, pas besoin d'ouvrir quoi que ce soit : une commande, et c'est réglé. - -Voici les outils que j'utilise concrètement, et dans quels cas. - ---- - -## ImageMagick, le plus polyvalent - -C'est l'outil de base. Il gère à peu près tous les formats qui existent, et la syntaxe est toujours la même. L'installation est classique : - -```bash -sudo apt install imagemagick -``` - -Convertir un format : - -```bash -magick image.jpg image.png -``` - -Redimensionner sans toucher au ratio, en posant une limite maximale : - -```bash -magick image.jpg -resize 1920x1920\> sortie.jpg -``` - -Le `\>` est important — sans lui, ImageMagick agrandit aussi les petites images. Avec, il ne fait que réduire. - -Préparer une image pour le web, en supprimant les métadonnées EXIF et en compressant : - -```bash -magick image.jpg -strip -quality 82 image_web.jpg -``` - -Pour traiter un répertoire entier, `mogrify` fait le même boulot mais **modifie les fichiers en place** — toujours travailler sur une copie ou rediriger vers un autre dossier : - -```bash -mogrify -path ./web -resize 1600x1600\> -quality 85 *.jpg -``` - ---- - -## libvips, pour les traitements lourds - -Quand il y a des centaines de photos ou des images très lourdes (scans, RAW exportés), libvips est nettement plus rapide et utilise beaucoup moins de mémoire qu'ImageMagick. Il charge les images en flux au lieu de tout mettre en RAM. - -```bash -sudo apt install libvips-tools -``` - -```bash -vips resize input.jpg output.jpg 0.5 # diviser la taille par 2 -vips copy input.png output.webp # conversion de format -``` - -La syntaxe est moins intuitive qu'ImageMagick mais les gains sur des gros volumes sont sensibles. - ---- - -## FFmpeg, pas que pour la vidéo - -FFmpeg est surtout connu pour la vidéo, mais il convertit les images aussi — utile quand il est déjà installé et qu'on veut éviter une dépendance supplémentaire, ou pour extraire des frames depuis une vidéo : - -```bash -ffmpeg -i video.mp4 frame_%04d.jpg -``` - -Redimensionner en conservant le ratio : - -```bash -ffmpeg -i input.jpg -vf scale=1280:-1 output.jpg -``` - ---- - -## Les métadonnées EXIF avec exiftool - -Les appareils photo embarquent beaucoup d'informations dans les fichiers : coordonnées GPS, modèle d'appareil, réglages. Avant de publier une photo, il vaut mieux vérifier ce qu'elle contient : - -```bash -sudo apt install libimage-exiftool-perl - -exiftool photo.jpg # lire toutes les métadonnées -exiftool -all= photo.jpg # tout supprimer -exiftool -TagsFromFile src.jpg dst.jpg # copier les métadonnées d'une image à une autre -``` - -ImageMagick peut aussi supprimer les EXIF avec `-strip`, mais exiftool offre plus de contrôle quand on veut garder certaines balises et supprimer d'autres. - ---- - -## Fichiers RAW - -Pour les CR2, NEF, ARW et autres formats propriétaires d'appareils photo, `darktable-cli` est la solution la plus propre : - -```bash -darktable-cli input.CR2 output.jpg -``` - -Il applique les mêmes algorithmes de développement que l'interface graphique de darktable. `dcraw` est une alternative plus ancienne et plus bas niveau : - -```bash -dcraw -c photo.CR2 > photo.ppm -``` - ---- - -## En pratique - -Conversion d'un dossier de PNG en WebP : - -```bash -for f in *.png; do - magick "$f" "${f%.png}.webp" -done -``` - -Pipeline complet pour publication web — redimensionnement, suppression EXIF, compression : - -```bash -magick input.jpg -resize 1600x1600\> -strip -quality 80 output.jpg -``` - -Traitement récursif sur un arbre de dossiers : - -```bash -find . -name "*.jpg" -exec magick {} -resize 1200x1200\> {} \; -``` - ---- - -## Récap rapide - -| Cas d'usage | Outil | -|---|---| -| Usage général | ImageMagick | -| Gros volumes / performance | libvips | -| Déjà dans le pipeline vidéo | FFmpeg | -| Fichiers RAW | darktable-cli | -| Lecture / nettoyage EXIF | exiftool | - -Pour 90 % des besoins courants, ImageMagick suffit. libvips vaut le coup d'être appris si on traite régulièrement des lots importants. +La manipulation d'images depuis le terminal est une de ces choses qu'on apprend une fois et qu'on utilise pour toujours. Pas besoin de GIMP, pas besoin d'ouvrir quoi que ce soit : une commande, et c'est réglé. + +Voici les outils que j'utilise concrètement, et dans quels cas. + +--- + +## ImageMagick, le plus polyvalent + +C'est l'outil de base. Il gère à peu près tous les formats qui existent, et la syntaxe est toujours la même. L'installation est classique : + +```bash +sudo apt install imagemagick +``` + +Convertir un format : + +```bash +magick image.jpg image.png +``` + +Redimensionner sans toucher au ratio, en posant une limite maximale : + +```bash +magick image.jpg -resize 1920x1920\> sortie.jpg +``` + +Le `\>` est important — sans lui, ImageMagick agrandit aussi les petites images. Avec, il ne fait que réduire. + +Préparer une image pour le web, en supprimant les métadonnées EXIF et en compressant : + +```bash +magick image.jpg -strip -quality 82 image_web.jpg +``` + +Pour traiter un répertoire entier, `mogrify` fait le même boulot mais **modifie les fichiers en place** — toujours travailler sur une copie ou rediriger vers un autre dossier : + +```bash +mogrify -path ./web -resize 1600x1600\> -quality 85 *.jpg +``` + +--- + +## libvips, pour les traitements lourds + +Quand il y a des centaines de photos ou des images très lourdes (scans, RAW exportés), libvips est nettement plus rapide et utilise beaucoup moins de mémoire qu'ImageMagick. Il charge les images en flux au lieu de tout mettre en RAM. + +```bash +sudo apt install libvips-tools +``` + +```bash +vips resize input.jpg output.jpg 0.5 # diviser la taille par 2 +vips copy input.png output.webp # conversion de format +``` + +La syntaxe est moins intuitive qu'ImageMagick mais les gains sur des gros volumes sont sensibles. + +--- + +## FFmpeg, pas que pour la vidéo + +FFmpeg est surtout connu pour la vidéo, mais il convertit les images aussi — utile quand il est déjà installé et qu'on veut éviter une dépendance supplémentaire, ou pour extraire des frames depuis une vidéo : + +```bash +ffmpeg -i video.mp4 frame_%04d.jpg +``` + +Redimensionner en conservant le ratio : + +```bash +ffmpeg -i input.jpg -vf scale=1280:-1 output.jpg +``` + +--- + +## Les métadonnées EXIF avec exiftool + +Les appareils photo embarquent beaucoup d'informations dans les fichiers : coordonnées GPS, modèle d'appareil, réglages. Avant de publier une photo, il vaut mieux vérifier ce qu'elle contient : + +```bash +sudo apt install libimage-exiftool-perl + +exiftool photo.jpg # lire toutes les métadonnées +exiftool -all= photo.jpg # tout supprimer +exiftool -TagsFromFile src.jpg dst.jpg # copier les métadonnées d'une image à une autre +``` + +ImageMagick peut aussi supprimer les EXIF avec `-strip`, mais exiftool offre plus de contrôle quand on veut garder certaines balises et supprimer d'autres. + +--- + +## Fichiers RAW + +Pour les CR2, NEF, ARW et autres formats propriétaires d'appareils photo, `darktable-cli` est la solution la plus propre : + +```bash +darktable-cli input.CR2 output.jpg +``` + +Il applique les mêmes algorithmes de développement que l'interface graphique de darktable. `dcraw` est une alternative plus ancienne et plus bas niveau : + +```bash +dcraw -c photo.CR2 > photo.ppm +``` + +--- + +## En pratique + +Conversion d'un dossier de PNG en WebP : + +```bash +for f in *.png; do + magick "$f" "${f%.png}.webp" +done +``` + +Pipeline complet pour publication web — redimensionnement, suppression EXIF, compression : + +```bash +magick input.jpg -resize 1600x1600\> -strip -quality 80 output.jpg +``` + +Traitement récursif sur un arbre de dossiers : + +```bash +find . -name "*.jpg" -exec magick {} -resize 1200x1200\> {} \; +``` + +--- + +## Récap rapide + +| Cas d'usage | Outil | +|---|---| +| Usage général | ImageMagick | +| Gros volumes / performance | libvips | +| Déjà dans le pipeline vidéo | FFmpeg | +| Fichiers RAW | darktable-cli | +| Lecture / nettoyage EXIF | exiftool | + +Pour 90 % des besoins courants, ImageMagick suffit. libvips vaut le coup d'être appris si on traite régulièrement des lots importants. diff --git a/data/46f2f084-8dd8-497a-aef0-4728367ce753/meta.json b/data/46f2f084-8dd8-497a-aef0-4728367ce753/meta.json index eb9db4f..584fa97 100644 --- a/data/46f2f084-8dd8-497a-aef0-4728367ce753/meta.json +++ b/data/46f2f084-8dd8-497a-aef0-4728367ce753/meta.json @@ -4,10 +4,27 @@ "title": "Convertir des images en ligne de commande sous Linux", "author": "cedric@abonnel.fr", "published": true, - "published_at": "2025-12-28 14:54:41", + "published_at": "2025-12-28 14:54", "created_at": "2025-12-28 14:54:41", - "updated_at": "2025-12-28 14:54:41", - "revisions": [], - "cover": "cover.jpg", + "updated_at": "2026-05-12 00:51:02", + "revisions": [ + { + "n": 1, + "date": "2026-05-12 00:51:02", + "comment": "", + "title": "Convertir des images en ligne de commande sous Linux" + } + ], + "cover": "cover.svg", + "files_meta": { + "illustration_conversion_images_cli_linux.svg": { + "author": "", + "source_url": "" + } + }, + "external_links": [], + "seo_title": "", + "seo_description": "", + "og_image": "", "category": "linux" } diff --git a/data/46f2f084-8dd8-497a-aef0-4728367ce753/revisions/0001.md b/data/46f2f084-8dd8-497a-aef0-4728367ce753/revisions/0001.md new file mode 100644 index 0000000..74faf0c --- /dev/null +++ b/data/46f2f084-8dd8-497a-aef0-4728367ce753/revisions/0001.md @@ -0,0 +1,142 @@ +La manipulation d'images depuis le terminal est une de ces choses qu'on apprend une fois et qu'on utilise pour toujours. Pas besoin de GIMP, pas besoin d'ouvrir quoi que ce soit : une commande, et c'est réglé. + +Voici les outils que j'utilise concrètement, et dans quels cas. + +--- + +## ImageMagick, le plus polyvalent + +C'est l'outil de base. Il gère à peu près tous les formats qui existent, et la syntaxe est toujours la même. L'installation est classique : + +```bash +sudo apt install imagemagick +``` + +Convertir un format : + +```bash +magick image.jpg image.png +``` + +Redimensionner sans toucher au ratio, en posant une limite maximale : + +```bash +magick image.jpg -resize 1920x1920\> sortie.jpg +``` + +Le `\>` est important — sans lui, ImageMagick agrandit aussi les petites images. Avec, il ne fait que réduire. + +Préparer une image pour le web, en supprimant les métadonnées EXIF et en compressant : + +```bash +magick image.jpg -strip -quality 82 image_web.jpg +``` + +Pour traiter un répertoire entier, `mogrify` fait le même boulot mais **modifie les fichiers en place** — toujours travailler sur une copie ou rediriger vers un autre dossier : + +```bash +mogrify -path ./web -resize 1600x1600\> -quality 85 *.jpg +``` + +--- + +## libvips, pour les traitements lourds + +Quand il y a des centaines de photos ou des images très lourdes (scans, RAW exportés), libvips est nettement plus rapide et utilise beaucoup moins de mémoire qu'ImageMagick. Il charge les images en flux au lieu de tout mettre en RAM. + +```bash +sudo apt install libvips-tools +``` + +```bash +vips resize input.jpg output.jpg 0.5 # diviser la taille par 2 +vips copy input.png output.webp # conversion de format +``` + +La syntaxe est moins intuitive qu'ImageMagick mais les gains sur des gros volumes sont sensibles. + +--- + +## FFmpeg, pas que pour la vidéo + +FFmpeg est surtout connu pour la vidéo, mais il convertit les images aussi — utile quand il est déjà installé et qu'on veut éviter une dépendance supplémentaire, ou pour extraire des frames depuis une vidéo : + +```bash +ffmpeg -i video.mp4 frame_%04d.jpg +``` + +Redimensionner en conservant le ratio : + +```bash +ffmpeg -i input.jpg -vf scale=1280:-1 output.jpg +``` + +--- + +## Les métadonnées EXIF avec exiftool + +Les appareils photo embarquent beaucoup d'informations dans les fichiers : coordonnées GPS, modèle d'appareil, réglages. Avant de publier une photo, il vaut mieux vérifier ce qu'elle contient : + +```bash +sudo apt install libimage-exiftool-perl + +exiftool photo.jpg # lire toutes les métadonnées +exiftool -all= photo.jpg # tout supprimer +exiftool -TagsFromFile src.jpg dst.jpg # copier les métadonnées d'une image à une autre +``` + +ImageMagick peut aussi supprimer les EXIF avec `-strip`, mais exiftool offre plus de contrôle quand on veut garder certaines balises et supprimer d'autres. + +--- + +## Fichiers RAW + +Pour les CR2, NEF, ARW et autres formats propriétaires d'appareils photo, `darktable-cli` est la solution la plus propre : + +```bash +darktable-cli input.CR2 output.jpg +``` + +Il applique les mêmes algorithmes de développement que l'interface graphique de darktable. `dcraw` est une alternative plus ancienne et plus bas niveau : + +```bash +dcraw -c photo.CR2 > photo.ppm +``` + +--- + +## En pratique + +Conversion d'un dossier de PNG en WebP : + +```bash +for f in *.png; do + magick "$f" "${f%.png}.webp" +done +``` + +Pipeline complet pour publication web — redimensionnement, suppression EXIF, compression : + +```bash +magick input.jpg -resize 1600x1600\> -strip -quality 80 output.jpg +``` + +Traitement récursif sur un arbre de dossiers : + +```bash +find . -name "*.jpg" -exec magick {} -resize 1200x1200\> {} \; +``` + +--- + +## Récap rapide + +| Cas d'usage | Outil | +|---|---| +| Usage général | ImageMagick | +| Gros volumes / performance | libvips | +| Déjà dans le pipeline vidéo | FFmpeg | +| Fichiers RAW | darktable-cli | +| Lecture / nettoyage EXIF | exiftool | + +Pour 90 % des besoins courants, ImageMagick suffit. libvips vaut le coup d'être appris si on traite régulièrement des lots importants. diff --git a/src/ArticleManager.php b/src/ArticleManager.php index 32ea787..89e1843 100644 --- a/src/ArticleManager.php +++ b/src/ArticleManager.php @@ -661,12 +661,13 @@ class ArticleManager private function extFromMime(string $mime): ?string { return match($mime) { - 'image/jpeg' => 'jpg', - 'image/png' => 'png', - 'image/webp' => 'webp', - 'image/gif' => 'gif', - 'image/avif' => 'avif', - default => null, + 'image/jpeg' => 'jpg', + 'image/png' => 'png', + 'image/webp' => 'webp', + 'image/gif' => 'gif', + 'image/avif' => 'avif', + 'image/svg+xml' => 'svg', + default => null, }; }