Créer un avi avec sélection de fichiers
Bonjour,
j'ai écrit une macro pour incruster des paramètres de mesure sur des images et en fin de traitement je veux réaliser un AVI. Dans le répertoire source il peut y avoir plusieurs types de fichier et je ne peux donc pas me contenter de faire un "run("Image Sequence...", "open=["+chemin_images+"] sort")" sinon ma macro me fait un AVI avec toutes les images et tous les AVI présents dans le répertoire :?
J'ai donc fait une bricole qui fait ceci :
- création d'un répertoire temporaire,
- copie des fichiers utiles vers ce répertoire
- ouverture de la séquence d'images avec ("Image Sequence...", "open=["+chemin_images+"] sort")"
- création de l'AVI avec run("AVI... ", "frame="+ str_nbre_fps +" save=&path");
- suppression des fichiers temporaires.
Cela marche très bien mais le soucis est que je peux avoir 1000 à 2000 images à traiter et le temps que met la machine à copier les fichiers temporaires est simplement inacceptable au regard du temps mis pour faire l'AVI (rapport 4 facilement).
Bref, quelqu'un connait-il le moyen d'ouvrir une séquence à partir d'un Array qui comporte les noms des fichiers et qui se trouvent noyés parmi d'autres fichiers "parasites" (c'est surement tout bête mais je sèche) ?
Voici un extrait du code avec le répertoire temporaire qui ne me plait pas :nono:
Merci
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
liste_fichier = getFileList(chemin_images_bis);
i=0;
for (m=0; m< liste_fichier.length; m++)
{
NomImageTampon = nom_run+num_pt;
if (startsWith(liste_fichier[m],NomImageTampon)==1 && endsWith(liste_fichier[m],str_Format)==1)
{
liste_pour_avi[i]=liste_fichier[m];
i++;
}
}
i--;
File.makeDirectory(chemin_images_bis+"tempo");
for (m=0; m<i; m++)
{
File.copy(chemin_images_bis+liste_pour_avi[m],chemin_images_bis+"tempo\\"+liste_pour_avi[m]);
}
run("Image Sequence...", "open=["+chemin_images_bis+"tempo\\"+"] sort");
path = chemin_images_bis + nom_run+num_pt+".avi" ;
run("AVI... ", "frame="+ str_nbre_fps +" save=&path");
close();
for (m=0; m<i; m++)
{
NomImageTampon = chemin_images_bis+"tempo\\"+liste_pour_avi[m] ;
File.delete(NomImageTampon);
}
File.delete( chemin_images_bis+"tempo");
showMessage("Avi terminé, fin de la séquence IMAGEJ"); |