Il y a 389 articles et 19 utilisateurs inscrits (ce bandeau est défini dans MediaWiki:Sitenotice)
Prétraitement et mise à jour automatisée des images préparées
Introduction
Un nouveau script permet de générer automatiquement l'ensemble des versions des images préparées. Il est aussi capable de mettre à jour les images préparées lorsque l'image originale change.
Ce script est disponible sur le SVN à l'emplacement @pleade-libre-sdx-2.5/script-pre-traitement/ImagePretraitement/ImagePretraitement.jar
Principe de fonctionnement
Il s'agit d'un script java qui se lance avec la commande java -jar (compatibilité java >= 6). Pour l'automatiser complètement, il faut l'enregistrer dans le crontab.
Le script offre les fonctionnalités ci-dessous:
- Création des versions miniature (60x60), vignette (300x300) default (2500x2500) et hidef (taux de compression 45%).
- Regénération des images pré-taritement dont l'image originale a été mise à jour.
- Possibilité d'utiliser vips ou imageMagick (par défaut) pour le traitement.
- Possibilité de supprimer les images préparées pour lesquels l'image originale n'existe plus.
- Création et journalisation des log. Possibilité de spécifier le nombre de jours de log à conserver
Exécution du script
Le script se lance de cette façon :
java -jar imagesPretraitement.jar <python> '<racines>' <pretrait> '<formats>' <vips> <delete> <logFile> <nbDaysForLog>
* <python> : emplacement absolue du script python plus. Exemple: /home/mdia/pretraitement_images_plus.py
* <racines> : entre cote, la liste des racines d'images séparée par ; . Exemple : '/home/test-images;/home/mdia/test-images2'
* <pretrait> : emplacement absolue du répertoire image préparées. Exemple : /home/mdia/test-images-preparees
* <formats> : entre cote, la liste des formats d'images préparées à générer séparée par ; . Exemple : 'default;vignette;hidef'
* <vips> : si true travail avec vips. Sinon, travail avec imageMagick
* <delete> : Si true le script supprime les images préparées dont l'image original n'existe plus. Si false, le script indique juste les images préparées à supprimer sans rien faire.
* <LogFile> : Emplacement absolue du ficheir de log.
* <nbDaysForLog> : nombre de jours de log à conserver
Exemple d’exécution du script:
java -jar ImagePretraitement.jar /home/mdia/pretraitement_images_plus.py '/home/mdia/test-images;/home/mdia/test-images2' /home/mdia/test-images-preparees 'default;vignette;hidef' vips true /home/mdia/ImagePretraitement.log 10
Exemple de programmation dans le crontab
0 20 * * * java -jar ImagePretraitement.jar /home/mdia/pretraitement_images_plus.py '/home/mdia/test-images;/home/mdia/test-images2' /home/mdia/test-images-preparees 'default;vignette;hidef' vips true /home/mdia/ImagePretraitement.log 10
Avec ce cron, le script se lance tout les jours à 20h00 et écrit ses log dans le fichier /home/mdia/test.log
Message de log par rapport au traitement des images
Quand il donne juste l'info des éléments à supprimer sans faire l'action
- [INFO NO DELETE] Répertoire vide :
- [INFO NO DELETE] Image originale inexistant pour :
Quand il supprime réellement
- [INFO DELETE] Suppression répertoire vide:
- [INFO DELETE] Suppression image préparée :
Quand il crée de nouvelles images préparées qui n'existaient pas avant
- [INFO CREATE DEFAULT|MINIATURE|HIDEF|VIGNETTE] Création image préparée :
Quand il met à jour une image préparée dont l'image original a changé
- [INFO UPDATE DEFAULT|MINIATURE|HIDEF|VIGNETTE] Mise à jour image préparée
Quand une image originale ne peut pas être traitée
- Erreur [0][!!IMAGE ILLISIBLE!!]
- Syntax error:
- ou d'autres messages d'erreurs
Prétraitement manuel
Le script python "seul" peut-être lancé manuellement, directement dans la console.
Exemple de syntaxe du script Windows :
pretraitement_images.py \
-–source=E:\diskE \
-–collection=FRAD064003_IR0001\BIARRITZ_1\3E18351 \
--cible=C:\img-preparees\diskE \
--format=miniature \
--max-width=1 \
--max-height=1 \
--width=60 \
--height=60 \
--quality=70
Il peut être nécessaire de lancer le script en forçant le pré-traitement.
Exemples de syntatxe du script Linux :
pretraitement_images_plus.py \
-–source=/var/data2/images2 \
-–collection=1R \
--cible=/var/data/images-preparees \
--format=hidef \
--quality=45 \
--verbose=5 \
--force \
--vips
Exemple d’exécution du script :
python /home/ajlsm/script-pre-traitement/bin/pretraitement_images_plus.py --source=/var/data2/images2 --collection=1R --cible=/var/data/images-preparees --format=hidef --quality=45 --verbose=5 --force --vips
Autre exemple :
python /home/ajlsm/script-pre-traitement/bin/pretraitement_images_plus.py --source=/var/data/images --collection=SCH --cible=/var/data/images-preparees --format=hidef --quality=45 --verbose=5 --force --vips
Voici les paramètres obligatoires et les paramètres optionnels :
obligatoires.add_option("-s", "--source",
action="store", type="string", dest="source",
help="Dossier source")
obligatoires.add_option("-c", "--collection",
action="store", type="string", dest="collection",
help="Collection d'images")
obligatoires.add_option("-b", "--cible",
action="store", type="string", dest="cible",
help="Dossier cible")
obligatoires.add_option("-f", "--format",
action="store", type="string", dest="format",
help="Dossier cible")
optionnels.add_option("-o", "--mode",
action="store", type="string", dest="mode", default="multiple",
help="Le mode")
obligatoires.add_option("-e", "--iPath",
action="store", type="string", dest="iPath",
help="Le chemin du fichier à traiter. A utiliser si l'argument mode est à single")
optionnels.add_option("-w", "--max-width",
action="store", type="int", dest="maxwidth", default=2200,
help="Largeur maximale pour un original (en pixels) [defaut: 2200]")
optionnels.add_option("-l", "--max-height",
action="store", type="int", dest="maxheight", default=2200,
help="Hauteur maximale pour un original (en pixels) [defaut: 2200]")
optionnels.add_option("-r", "--max-resolution",
action="store", type="int", dest="maxres", default=-1,
help="Resolution maximale pour un original (en pixels) [defaut: -1]")
optionnels.add_option("-m", "--min-resolution",
action="store", type="int", dest="minres", default=-1,
help="Resolution minimale pour un original (en pixels) [defaut: -1]")
optionnels.add_option("-i", "--width",
action="store", type="int", dest="width", default=2000,
help="Largeur de la conversion (en pixels) [defaut: 2000]")
optionnels.add_option("-g", "--height",
action="store", type="int", dest="height", default=2000,
help="Hauteur de la conversion (en pixels) [defaut: 2000]")
optionnels.add_option("-j", "--dxtile",
action="store", type="int", dest="dxtile", default=512,
help="DZI, largeur d'une tuile [defaut: 512]")
optionnels.add_option("-k", "--dytile",
action="store", type="int", dest="dytile", default=512,
help="DZI, hauteur d'une tuile [defaut: 512]")
optionnels.add_option("-q", "--quality",
action="store", type="int", dest="quality", default=70,
help="Taux de compression de la conversion (de 0 a 100) [defaut: 70]")
optionnels.add_option("-d", "--depth",
action="store", type="int", dest="depth", default=8,
help="Intensite de la conversion (8 ou 16 bits) [defaut: 8]")
optionnels.add_option("-x", "--force",
action="store_true", dest="force", help="Forcer le pre-traitement malgre"
"l'existance de l'image pre-traitee.")
optionnels.add_option("-t", "--compter",
action="store_true", dest="compter",
help="Desactiver la conversion, effectue un simple comptage des images \
qui seront pre-traitees")
optionnels.add_option("-n", "--convert-exec",
action="store", type="string", dest="convertexec", default="convert",
help="L'excutable pour la conversion [defaut: convert]")
optionnels.add_option("-a", "--magickslicer-exec",
action="store", type="string", dest="magickslicerexec", default="magick-slicer.sh",
help="Chemin vers l'exécutable Magick Slicer à utiliser pour la conversion [defaut: convert]")
optionnels.add_option("-y", "--identify-exec",
action="store", type="string", dest="identifyexec", default="identify",
help="L'excutable pour l'identification des images [defaut: identify]")
optionnels.add_option("-v", "--verbose",
action="store", type="int", dest="verbose", default=2,
help="Niveau de verbosite (0-3).\n\
Niveau 0 : aucun message.\n\
Niveau 1 : Dates de debut et de fin, suivi du pre-traitement.\n\
Niveau 2 : Idem 1 plus compte prealable des images a traiter [defaut].\n\
Niveau 3 : Idem 2 plus message de debogage.")
optionnels.add_option("-p", "--pyramidal",
action="store_true", dest="pyramidal", help="Traitement pyramidal des images (Requiert ImageMagick >= 6.4.7-10")
optionnels.add_option("-z", "--deepzoom",
action="store_true", dest="deepzoom", help="Traitement deepzoom (dzi) des images (Requiert magick-slicer.sh au même niveau ou à indiquer avec le paramétre -a ou --magick-slicer")
optionnels.add_option("-u", "--vips",
action="store_true", dest="vips", help="Traitement pyramidal en utilisant vips à la place de ImageMagick (Requiert Vips >= 8.x.x")
optparser.add_option_group(obligatoires)
optparser.add_option_group(optionnels)