Fichier gif animé

pom -  
 ren -
bonjour, est-ce que quelqu'un sait faire un gif animé à partir de Matlab. Je m'explique : sous Matlab, à l'aide de la commande movie on peut faire un "film". Au début Matlab calcul les images et les affiches de manière très saccadée (du fait des calculs) tout en les gardant en mémoire (à l'aide de movie) puis il affiche comme un film toutes les images (je suis en train de représenter la chute d'une solide rigide dans un fluide parfait).

Malheureusement si je veux revoir le film (un autre jour par exemple) il faut relancer tous les calculs. Je voudrais donc faire un gif animé (ou qqch d'autre d'équivalent).

Savez-vous comment je dois m'y prendre ?

Merci
Pom
A voir également:

4 réponses

ren
 
on peut faire directement des gif animés avec 'imwrite'
il est posssible de récupérer l'image de la figure par 'getframe' puis de l'ajouter à la fin du gif

Voici un petit exemple:

%%%%%%

isfirst=true;

for ...

%on fait la figure
plot(...);

%on ajoute l'image à la fin de notre gif
F = getframe(gcf); %on récupère l'image
[RGB,badmap] = frame2im(F); %on la convertie en image de type 'true-color'
[IND,map] = rgb2ind(RGB, 255); %on convertie en couleur indéxées. 255 est le nombre de couleur.
if isfirst
imwrite(IND,map,'example.gif','gif'); %c'est la première image: on crée le fichier
isfirst=false;
else
imwrite(IND,map,'example.gif','gif','WriteMode','append'); %ce sont les suivante: on les ajoute
end
end

%%%%

et voilà!
4
inspecteur_derrick
 
Bonjour,
Matlab intègre des fonctions qui permettent de produire des fichiers *.avi. Il s'agit de 'avifile', 'getframe' et 'addframe'.
Un exemple :

monfilm = avifile('flim.avi','fps',25);
for I = 1 : N
surf(toto(I));
F = getframe(gcf);
monfilm = addframe(monfilm,F);
end
monfilm= close(monfilm);

Cette méthode produit des films très gros et de mauvaise qualité.
Pour ma part, je préfère écrire un script qui exporte les différentes figures (pour t=1,2,3...) en png. Ensuite je crée un film avec un encodeur à partir de ces images. Sous linux, mencoder fait ça très bien.
1
ren
 
on peut bien sûr choisir la durée attendue entre deux images successives. Remplacer la ligne correspondante par

imwrite(IND,map,filename,fmt,'WriteMode','append','DelayTime',0.1);

ou 0.1 est le temps d'attente en question.
1
YoyoS Messages postés 18 Statut Membre 51
 
Ensuite tu peux créer tes gif à partir de ces videos AVI avec ce tutoriel sur imageready:

http://www.cave-a-yoyo.com/forum/tutoriel-creer-un-gif-anime-avec-une-video-sur-imageready-vt52.html
0