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

4 réponses

  1. 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
  2. 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
  3. 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
  4. 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