1. Accueil
  2. Docs
  3. Documentation de ImageGrab
  4. Utilisation
  5. Scripts

Scripts

ImageGrab dispose d’un module permettant d’exécuter des scripts pour automatiser certaines de ses fonctions.

Pour accéder à ce module, tapez F12 ce qui ouvre la page des scripts. Vous pouvez aussi utiliser le bouton Scripts de la barre d’outils ou la commande de menu ?/script.

Sur la page qui s’ouvre vous pouvez écrire un script selon une syntaxe très proche du langage Pascal, puisque le module est basé sur l’utilitaire Pascalscript de RemObjects.  L’objectif de cette documentation n’est pas de faire un cours sur PascalScript. Voyez par exemple ce site sur Github si vous voulez approfondir cette question. Les exemples de script qui suivent  ci-dessous peuvent être une inspiration pour les adapter à vos besoins.  Mais attention, l’écriture de scripts est un vrai travail de programmation qui ne sera pas facile pour ceux qui n’ont aucune notion en la matière. Heureusement ils peuvent enregistrer des Macros au lieu de programmer les scripts.

L’intérêt des scripts dans mes logiciels est qu’ils peuvent utiliser des procédures permettant de commander le logiciel. La liste de ces procédures est obtenue en tapant F1  ce qui ouvre la fenêtre des aides. Contrairement à d’autres fenêtres de l’application, cette fenêtre peut rester ouverte en permanence, et peut être déplacée sur l’écran indépendamment de la fenêtre principale. On peut même la placer sur un second écran si on a un poste de travail qui en est pourvu.

Sélectionnons par exemple OpenFile (CTRL+O) sous l’onglet ImageGrab. Plusieurs informations sont  alors affichées:

  1. Le nom de la procédure, par exemple OpenFile.
  2. Il est suivi par le raccourci clavier CTRL+O qui permet de l’appeler quand on utilise le logiciel. Ce raccourci ne sert pas pour écrire des scripts mais pour commander manuellement l’application.
  3. L’indice qui s’affiche quand la souris passe sur un composant qui actionne cette procédure. Il donne de manière synthétique l’action que réalise la procédure.
  4. La syntaxe de la procédure, notamment si elle utilise des variables, ici : procedure OpenFile(const aWidestring:widestring); Cette syntaxe montre, dans l’exemple, qu’il faut donner à la procedure un paramètre qui est un widestring. Ce sera bien sûr le nom complet du fichier à ouvrir, puisque vous avez compris à ce stade que OpenFile sert à ouvrir un fichier video.
  5. La syntaxe du switch en mode ligne de commandes. Cela ne sert pas pour les scripts, mais pour pouvoir lancer l’application en mode ligne de commandes.
  6. Eventuellement une zone pouvant comprendre des commentaires. 

Dès lors l’usage dans le script en découle.

Exemple 1:

Dans l’exemple 1 on a écrit un script qui commence par ouvrir un fichier vidéo avec OpenFile, puis se positionne à un timestamp de 0:47:33:21 avec Position, là où on veut saisir l’image. On définit alors des caractéristiques de l’insertion, en fixant la taille de la police à 36 avec InsertFontsize , la position de l’incrustation à 9.900, 8.500 avec InsertPosition (cela représente une position relative sur 10.000,10.000, donc en bas à droite). On définit une insertion personnalisée qui met le timestamp sur la première ligne avec insertPerso1 (code %S) et le nom du fichier avec extension sur la seconde ligne avec insertPerso2 (codes %F%E). On aligne les deux lignes à droite avec alignlines et on met l’épaisseur de la bordure des caractères à 2 avec insertBorderWidth. Puis on applique l’insertion personnalisée  ainsi définie avec InsertPerso, on active  l’insertion avec InsertTextOn, et on capture l’image avec Grab.

Une fois qu’on a saisi tout cela dans la page des scripts on peut l’exécuter en cliquant sur le bouton Executer, ou le raccourci F5, ou la commande du menu Macros/Executer. Des messages de succès ou d’échec s’affichent en bas de la page.

Ici on a un succès de la compilation et de l’exécution, et l’application ImageGrab donne ce qu’on souhaitait:

 

Exemple 2:

L’exemple 1 est uniquement pédagogique pour montrer comment on peut écrire des scripts. En lui-même il a peu d’intérêt et on aurait pu obtenir le même résultat plus rapidement en procédant manuellement.

Mais toute la force des scripts apparaît quand on utilise des variables et certaines commandes spéciales. L’exemple 2 prépare la même inscrustation que l’exemple 1, mais avec une transparence de 33% (type filigrane) et une police blanche. Puis il l’applique à toutes les vidéos qui sont dans le dossier source en saisissant pour chacune 3 images à 30 secondes, 1 minute et 1 minute 30. Les images sont enregistrées en jpeg dans un dossier destination avec une racine prise sur le nom du fichier, et ensuite un numéro entre 1 et 3. La qualité jpeg est à 80%. 

L’intérêt de cet exemple est d’observer qu’on a défini une variable VideoFile et qu’on utilise des fonctions FindFirst et FindNext  et FindClose pour parcourir tous les fichiers d’un dossier qui ont une extension donnée. On observera aussi la procedure processmessages qui demande à Windows d’exécuter les messages pendants avant de poursuivre. Cela peut être utile par exemple pour que l’incrustation soit mise à jour avant de saisir une image.

  • Les amateurs de programmation en Pascal ou delphi ne seront pas dépaysés, même s’il faut faire attention à la syntaxe de chaque commande qui est assez particulière et ne souffre aucun à peu près, sauf éventuellement pour la casse des commandes où on peut mettre indifféremment des minuscules et des majuscules.
Cet article vous a-t-il été utile ? Oui Non