•  » Utilisation
  •  » Création Automatique De Vignettes Sous Linux

#1 2004-02-15 17:37:42

Thierry L
Membre
Gentilly 94
2004-02-15
13

Création Automatique De Vignettes Sous Linux

Pour automatiser la création de vignettes sous Linux, dans votre répertoire "photos" par exemple :

A condition d'avoir installer le paquet ImageMagick (bah, sinon l'installer)

Dans un Xterm, depuis votre répertoire "photos" faire

$ for image in *
> do
> convert -geometry 120x120 $image TN-$image
> done

Pour des vignettes avec un préfixe TN- à largeur fixe de 120 pixels en respectant le ratio des images originales.

Ou

$ for image in *
> do
> convert -geometry 25% $image TN-$image
> done

Pour créer des vignettes à partir d'un pourcentage des images originales.

Euh... Je viens juste de découvrir PhpGallery que je viens d'installer pour mon carnet web :mrgreen:

Hors ligne

#2 2004-02-15 23:30:41

plg
Équipe Piwigo
Nantes, France, Europe
2002-04-05
12672

Re: Création Automatique De Vignettes Sous Linux

en exclu, mon script perso :-)

Code:

#!/bin/bash

mogrify -antialias -geometry 640x640 -quality 70 *.jpg

mkdir thumbnail
cp *.jpg ./thumbnail/
cd thumbnail
prefix_thumbnail='TN-'

for i in `ls .`; do
  if [ -f $i ]; then
    mogrify -geometry 128x96 -quality 70 $i
    new=$prefix_thumbnail$i
    mv $i $new
    echo "$i to thumbnail : done"
  fi
done

· redimensionnement en 640*480 des images du répertoire (sorties de mon appareil, elles sont en 1600*1200)
· création d'un sous répertoire "thumbnail", puis création des miniatures dedans.


Les historiens ont établi que Pierrick était le premier utilisateur connu de Piwigo.

Hors ligne

#3 2004-02-16 00:12:57

Thierry L
Membre
Gentilly 94
2004-02-15
13

Re: Création Automatique De Vignettes Sous Linux

C'est pas de refus, merci! Je ne suis pas une bête de scripts, et pour tout dire je n'en utilise jamais.

mogrify, antialias... Faut que je fouille un peu plus ImageMagick dont j'ai compris l'utilité particulière depuis que j'en ai besoin pour PhpGallery.

Je vais essayer ça, d'autant que les valeurs de tes redimensionnements correspondent à ce que j'ai plus ou moins calculé cet après-midi pour un affichage raisonnable.

Tiens, au gré de mes recherches j'ai découvert une drôle de page qui traduit en ligne de commande ImageMagick des options passées dans un formulaire : http://exeprod.com/developpement/resize/

Enfin puisque j'y suis, dans les instructions le préfixe des vignettes est erroné : TN_ au lieu de TN-

Et, allez je déborde encore un peu, j'ai trouvé l'installation de PhpWebGallery vraiment très aisée.





Hors ligne

#4 2004-02-16 01:30:45

Thierry L
Membre
Gentilly 94
2004-02-15
13

Re: Création Automatique De Vignettes Sous Linux

Impecc!! Essai concluant!!

j'ai nommé ton script tnpwg et je l'ai rendu exécutable avec un

Code:

chmod +x tnpwg

Je sue à grosses gouttes  :oops:

Puis j'ai placé ledit script dans un dossier selectionPWG pour l'utiliser sur les photos sélectionnées que ce répertoire contiendra.

Je sens que j'atteins mes limites de linuxien du dimanche.

Encore merci.

Hors ligne

#5 2016-10-20 16:02:38

Didier.Dequin
Invité

Re: Création Automatique De Vignettes Sous Linux

Bonjour,

J'avais besoin d'un script pour les vignettes aussi, alors je vous livre celui que j'ai écris en prenant en compte diverses dimensions et la création du dossier recevant les vignettes, la mise en minuscule des noms de fichiers etc...
Voici le scipt à copier dans un fichier MesVignettes.sh en mode chmod +x
C'est une ébauche, mais peut être y ajouté l'emplacement du dossier avec un pwd pour générer les fichiers dans le dossier qui appelle la commande ?

#!/bin/bash
## Script de création de vignettes en mode console
## =================================================
## Creation du : 17/10/2016
## Modifier le : 20/10/2016
## Par Didier pour un besoin de gestion des vignettes
## sous Linux
## ======================================================
## Ce Script me générer des vignettes de photos de façon
## automatique après un choix de dimension.
## ======================================================
    mondossier=`pwd`
    compteur=0
    clear
# Les différents choix de vignettes
# =================================
    echo "!------------------------------------------------------------!"
    echo "!              Taille des vignettes au choix                -!"
    echo "!------------------------------------------------------------!"
    echo "!1280x1024 --------------------> ( 1 )                       !"
    echo "!1024x768----------------------> ( 2 )                       !"
    echo "!800x600 (Pour Paravroum)------> ( 3 )                       !"
    echo "!640x480 ----------------------> ( 4 )                       !"
    echo "!320x240 ----------------------> ( 5 )                       !"
    echo "!160x120 ----------------------> ( 6 )                       !"
    echo "!------------------------------------------------------------!"
    echo "! Merci de choisir une dimension de photo :"$VAR
    echo "!------------------------------------------------------------!"
    echo "! CTRL+Z pour quitter                       !"
    echo "!------------------------------------------------------------!"
    read VAR
    case $VAR in
    1)
echo ""
echo "======================="
echo "! Images en 1280x1024 !"
echo "======================="
echo "-----------------------------"
echo "Debut de Creation : 1280x1024"
echo "-----------------------------"
# Cette ligne est dans le script principal, mais je n'ai
# pas vu son intérêt dans le fonctionement.
## mogrify -antialias -geometry 640x640 -quality 70 *.jpg

# - Création du dossier par défaut
mkdir thumbnail/1280x1024
# - Renomme tous les fichiers de type JPG en jpg (Minuscule)
rename 'y/A-Z/a-z/' *.JPG
# - Copie des images dans le nouveau dossier
cp *.jpg ./thumbnail/1280x1024/
# - On se place dans le dossier correspondant
cd thumbnail/1280x1024/
# Ajout d'un prefixe
prefix_thumbnail='Vig-'

for i in `ls .`; do
  if [ -f $i ]; then
file=$i
# Exemple avec Identify
# DSC_0009.JPG JPEG 640x360 640x360+0+0 8-bit sRGB 19.7KB 0.000u 0:00.000
echo "--------------------------------------------------"
echo "Nom : " `identify $file | awk '{print $1}'`
echo "Extension : " `identify $file | awk '{print $2}'`
echo "Dimension : " `identify $file | awk '{print $3}'`
echo "Type : " `identify $file | awk '{print $5}'`
echo "Taille : " `identify $file | awk '{print $7}'`
echo "--------------------------------------------------"
geometry=`identify $file | awk '{print $3}'`
# geometry can be 563x144+0+0 or 75x98
# we need to get rid of the plus (+) and the x characters:
width=`echo $geometry | sed 's/[^0-9]/ /g' | awk '{print $1}'`
height=`echo $geometry | sed 's/[^0-9]/ /g' | awk '{print $2}'`
echo "<img src=\"$i\" width=\"$width\" height=\"$height\">"
# Images en 1280x1024 et 80 de Qualité
mogrify -geometry 1280x1024 -quality 80 $i
new=$prefix_thumbnail$i
mv $i $new
echo "Vignette $i : OK"
fi
done
    ;;
    2)
echo ""
echo "======================="
echo "! Images en 1024x768  !"
echo "======================="
echo "----------------------------"
echo "Debut de Creation : 1024x768"
echo "----------------------------"
# - Création du dossier par défaut
mkdir thumbnail/1024x768
# - Renomme tous les fichiers de type JPG en jpg (Minuscule)
rename 'y/A-Z/a-z/' *.JPG
# - Copie des  images dans le nouveau dossier
cp *.jpg ./thumbnail/1024x768/
# - On se place dans le dossier
cd thumbnail/1024x768/
# Ajout d'un prefixe
prefix_thumbnail='Vig-'

for i in `ls .`; do
  if [ -f $i ]; then
file=$i
# Exemple avec Identify
# DSC_0009.JPG JPEG 640x360 640x360+0+0 8-bit sRGB 19.7KB 0.000u 0:00.000
echo "--------------------------------------------------"
echo "Nom : " `identify $file | awk '{print $1}'`
echo "Extension : " `identify $file | awk '{print $2}'`
echo "Dimension : " `identify $file | awk '{print $3}'`
echo "Type : " `identify $file | awk '{print $5}'`
echo "Taille : " `identify $file | awk '{print $7}'`
echo "--------------------------------------------------"
geometry=`identify $file | awk '{print $3}'`
# geometry can be 563x144+0+0 or 75x98
# we need to get rid of the plus (+) and the x characters:
width=`echo $geometry | sed 's/[^0-9]/ /g' | awk '{print $1}'`
height=`echo $geometry | sed 's/[^0-9]/ /g' | awk '{print $2}'`
echo "<img src=\"$i\" width=\"$width\" height=\"$height\">"
# Images en 1024x768 et 80 de Qualité
mogrify -geometry 1024x768 -quality 80 $i
new=$prefix_thumbnail$i
mv $i $new
echo "Vignette $i : OK"
fi
done
    ;;
    3)
echo ""
echo "======================="
echo "! Images en 800x600   !"
echo "======================="
echo "---------------------------"
echo "Debut de Creation : 800x600"
echo "---------------------------"
# - Création du dossier par défaut
mkdir thumbnail/800x600
# - Renomme tous les fichiers de type JPG en jpg (Minuscule)
rename 'y/A-Z/a-z/' *.JPG
# - Copie des  images dans le nouveau dossier
cp *.jpg ./thumbnail/800x600/
# - On se place dans le dossier
cd thumbnail/800x600/
# Ajout d'un prefixe
prefix_thumbnail='Vig-'

for i in `ls .`; do
  if [ -f $i ]; then
file=$i
# Exemple avec Identify
# DSC_0009.JPG JPEG 640x360 640x360+0+0 8-bit sRGB 19.7KB 0.000u 0:00.000
echo "--------------------------------------------------"
echo "Nom : " `identify $file | awk '{print $1}'`
echo "Extension : " `identify $file | awk '{print $2}'`
echo "Dimension : " `identify $file | awk '{print $3}'`
echo "Type : " `identify $file | awk '{print $5}'`
echo "Taille : " `identify $file | awk '{print $7}'`
echo "--------------------------------------------------"
geometry=`identify $file | awk '{print $3}'`
# geometry can be 563x144+0+0 or 75x98
# we need to get rid of the plus (+) and the x characters:
width=`echo $geometry | sed 's/[^0-9]/ /g' | awk '{print $1}'`
height=`echo $geometry | sed 's/[^0-9]/ /g' | awk '{print $2}'`
echo "<img src=\"$i\" width=\"$width\" height=\"$height\">"
# Images en 800x600 et 80 de Qualité
mogrify -geometry 800x600 -quality 80 $i
new=$prefix_thumbnail$i
mv $i $new
echo "Vignette $i : OK"
fi
done
    ;;
    4)
echo ""
echo "======================="
echo "! Images en 640x480   !"
echo "======================="
echo "---------------------------"
echo "Debut de Creation : 640x480"
echo "---------------------------"
# - Création du dossier par défaut
mkdir thumbnail/640x480
# - Renomme tous les fichiers de type JPG en jpg (Minuscule)
rename 'y/A-Z/a-z/' *.JPG
# - Copie des  images dans le nouveau dossier
cp *.jpg ./thumbnail/640x480/
# - On se place dans le dossier
cd thumbnail/640x480/
# Ajout d'un prefixe
prefix_thumbnail='Vig-'

for i in `ls .`; do
  if [ -f $i ]; then
file=$i
# Exemple avec Identify
# DSC_0009.JPG JPEG 640x360 640x360+0+0 8-bit sRGB 19.7KB 0.000u 0:00.000
echo "--------------------------------------------------"
echo "Nom : " `identify $file | awk '{print $1}'`
echo "Extension : " `identify $file | awk '{print $2}'`
echo "Dimension : " `identify $file | awk '{print $3}'`
echo "Type : " `identify $file | awk '{print $5}'`
echo "Taille : " `identify $file | awk '{print $7}'`
echo "--------------------------------------------------"
geometry=`identify $file | awk '{print $3}'`
# geometry can be 563x144+0+0 or 75x98
# we need to get rid of the plus (+) and the x characters:
width=`echo $geometry | sed 's/[^0-9]/ /g' | awk '{print $1}'`
height=`echo $geometry | sed 's/[^0-9]/ /g' | awk '{print $2}'`
echo "<img src=\"$i\" width=\"$width\" height=\"$height\">"
# Images en 800x600 et 80 de Qualité
mogrify -geometry 640x480 -quality 80 $i
new=$prefix_thumbnail$i
mv $i $new
echo "Vignette $i : OK"
fi
done
    ;;
    5)
echo ""
echo "======================="
echo "! Images en 320x240   !"
echo "======================="
echo "---------------------------"
echo "Debut de Creation : 320x240"
echo "---------------------------"
# - Création du dossier par défaut
mkdir thumbnail/320x240
# - Renomme tous les fichiers de type JPG en jpg (Minuscule)
rename 'y/A-Z/a-z/' *.JPG
# - Copie des  images dans le nouveau dossier
cp *.jpg ./thumbnail/320x240/
# - On se place dans le dossier
cd thumbnail/320x240/
# Ajout d'un prefixe
prefix_thumbnail='Vig-'

for i in `ls .`; do
  if [ -f $i ]; then
file=$i
# Exemple avec Identify
# DSC_0009.JPG JPEG 640x360 640x360+0+0 8-bit sRGB 19.7KB 0.000u 0:00.000
echo "--------------------------------------------------"
echo "Nom : " `identify $file | awk '{print $1}'`
echo "Extension : " `identify $file | awk '{print $2}'`
echo "Dimension : " `identify $file | awk '{print $3}'`
echo "Type : " `identify $file | awk '{print $5}'`
echo "Taille : " `identify $file | awk '{print $7}'`
echo "--------------------------------------------------"
geometry=`identify $file | awk '{print $3}'`
# geometry can be 563x144+0+0 or 75x98
# we need to get rid of the plus (+) and the x characters:
width=`echo $geometry | sed 's/[^0-9]/ /g' | awk '{print $1}'`
height=`echo $geometry | sed 's/[^0-9]/ /g' | awk '{print $2}'`
echo "<img src=\"$i\" width=\"$width\" height=\"$height\">"
# Images en 320x240 et 80 de Qualité
mogrify -geometry 320x240 -quality 80 $i
new=$prefix_thumbnail$i
mv $i $new
echo "Vignette $i : OK"
fi
done
    ;;
    6)
echo ""
echo "======================="
echo "! Images en 160x120   !"
echo "======================="
echo "---------------------------"
echo "Debut de Creation : 160x120"
echo "---------------------------"
# - Création du dossier par défaut
mkdir thumbnail/160x120
# - Renomme tous les fichiers de type JPG en jpg (Minuscule)
rename 'y/A-Z/a-z/' *.JPG
# - Copie des  images dans le nouveau dossier
cp *.jpg ./thumbnail/160x120/
# - On se place dans le dossier
cd thumbnail/160x120/
# Ajout d'un prefixe
prefix_thumbnail='Vig-'

for i in `ls .`; do
if [ -f $i ]; then
file=$i
# Exemple avec Identify
# DSC_0009.JPG JPEG 640x360 640x360+0+0 8-bit sRGB 19.7KB 0.000u 0:00.000
echo "--------------------------------------------------"
echo "Nom : " `identify $file | awk '{print $1}'`
echo "Extension : " `identify $file | awk '{print $2}'`
echo "Dimension : " `identify $file | awk '{print $3}'`
echo "Type : " `identify $file | awk '{print $5}'`
echo "Taille : " `identify $file | awk '{print $7}'`
echo "--------------------------------------------------"
geometry=`identify $file | awk '{print $3}'`
# geometry can be 563x144+0+0 or 75x98
# we need to get rid of the plus (+) and the x characters:
width=`echo $geometry | sed 's/[^0-9]/ /g' | awk '{print $1}'`
height=`echo $geometry | sed 's/[^0-9]/ /g' | awk '{print $2}'`
echo "<img src=\"$i\" width=\"$width\" height=\"$height\">"
# Images en 160x120 et 80 de Qualité
mogrify -geometry 160x120 -quality 80 $i
new=$prefix_thumbnail$i
mv $i $new
echo "Vignette $i : OK"
  fi
done
    ;;
    *)
clear
echo "Ce n'est pas une de mes options"
sleep 3
    ;;
    esac

# Message de Fin de Création
    date=`date +%X-%x`
    echo "!----------------------------------!"
    echo "! Fin de création des vignettes !! !"
    echo "!----------------------------------!"

#6 2016-11-11 15:14:55

jdd
Membre
Toulouse
2009-12-20
407

Re: Création Automatique De Vignettes Sous Linux

Bonjour,

Je vous donne le mien, écrit pour Charlie's contents, il permet de faire des vignettes pour les vidéos

Code:

#!/bin/bash
# echo usage: thumbforpiwi.sh *.mp4
# Faire d'abord detox -s utf_8 *

detox -s utf_8 *
chmod a+r *

mkdir pwg_representative ;  
for a ; do
  b=`echo "$a" | cut -d'.' -f1` ;
  ffmpeg -i $a -r 1 -ss 00:00:05 -t 00:0:01 -f image2 $b.jpg ;

  convert -resize 128x72 $b.jpg pwg_representative/$b.jpg ;
  rm $b.jpg ;
done
exit

il fonctionne très bien sur une openSUSE (toutes versions). detox permet de "normaliser" les noms de fichiers pour les adapter à piwigo. Il ne suffit pas toujours, d'ailleurs, je me suis récemment trouvé avec des virgules ou des % dans un nom de fichier que detox ne traite pas par défaut... c'est rare, je l'ai donc fait avec:

Code:

rename "%" "_" *.jpg

Le script extrait le nom du fichier, trouve une image dans la vidéo (cette partie peut être supprimée pour des photos) et convertit pour avoir les imagettes.

Je place le script dans ~/bin et je le rends exécutable, comme ça il est dispo dans n'importe quel répertoire.

jdd

Dernière modification par jdd (2016-11-11 15:17:03)

Hors ligne

  •  » Utilisation
  •  » Création Automatique De Vignettes Sous Linux

Pied de page des forums

Propulsé par FluxBB

github twitter newsletter Faire un don Piwigo.org © 2002-2024 · Contact