Sommaire
- Ruffle, l'agitateur du web
- ImageMagick ou la magie de Noël
- L'homme qui valait 350 millions (de francs)
- Pour en savoir plus
Je partage avec vous les dix-neuf animations du dessinateur JC ressuscitées du royaume des SWF, sous forme de GIF animés, grâce à un script Bash appelant Ruffle et ImageMagick. En effet, comme le disait Glandos en commentaire de ma seconde étude ArkéoLogique, « c'est un travail pour Ruffle ! », un formidable effort sous licences MIT et Apache 2.0 pour dérouiller les contenus Flash à coups de Rust et WebAssembly.
L'archive contenant les animations GIF est ici jusqu'au 30 décembre. Et pour ceux qui ont manqué un épisode, l'archive originale complète de JC est ici, mais seulement jusqu'au 7 décembre (le fichier est plus gros).
Le script est disponible sur Codeberg sous licence MIT. Pour l'instant, j'ai vraiment la flemme d'en faire un vrai outil avec une gestion d'arguments et une aide, je me suis contenté de coder en dur les répertoires utiles (Ruffle, les SWF, la sortie) et je n'ai pas essayé d'installer Ruffle dans le système. Il faut dire que je n'ai pas l'impression que je vais m'en resservir une seconde fois dans ma vie… Mais voyons maintenant les points intéressants du script.
Ruffle, l'agitateur du web
On peut le tester dans l'onglet demo du site ou l'installer dans son navigateur, mais on peut aussi compiler le dépôt GitHub du projet. On peut alors utiliser Ruffle soit sous forme d'application graphique :
$ cargo run --release --package=ruffle_desktop
soit sous forme d'applications en ligne de commande.
Bon, la compilation du projet fait un peu peur avec ses centaines de dépendances Rust, mais ça se passe bien. J'ai testé sur un vieux PC en Fedora 43. A part Rust, j'ai juste eu à installer le paquet alsa-lib-devel car Ruffle gère le son, en tout cas côté visualisation. Pour l'instant l'exporter ne semble pas gérer le son mais le projet est très actif (environ 40 commits par semaine), peut-être que ça viendra. Et dans nos 19 fichiers SWF, seuls deux comportent du son à ma connaissance : linux-petitanim/linuxpiqueur-son.swf et linux-petitanim/linuxpiqueur-son02.swf.
Ruffle propose plusieurs commandes, en particulier ruffle_scanner qui, avec sa sous-commande scan, scanne un répertoire et ses sous-répertoires à la recherche de fichiers SWF et génère ensuite un fichier CSV très utile avec pleins d'informations (une ligne par fichier SWF) :
cargo run --release --package=ruffle_scanner -- scan "${SWF_DIR}" "${CSV_FILE}"
C'est de plus facile d'itérer sur les lignes d'un CSV :
for line in $(cat "${CSV_FILE}") ; do
et la commande cut permet facilement d'extraire les champs d'un CSV, par exemple ici le framerate de l'animation (colonne 11) :
framerate=$(echo "${line}" | cut -d ',' -f 11)
La commande exporter de Ruffle permet alors d'écrire dans un répertoire de sortie toutes les images de l'animation en PNG à la dimension voulue grâce à un facteur d'échelle :
cargo run --release --package=exporter -- "${SWF_DIR}/${path}" "${OUTPUT_DIR}/${gif_dir}" --silent --frames all --scale ${scale}
ImageMagick ou la magie de Noël
Les GIF animés, ça fleure bon le web des années 90, quand ça clignotait de partout comme un sapin de Noël. Mais c'est justement un format simple, bien documenté, largement supporté par les logiciels actuels (navigateurs, visualiseurs, GIMP…) et compressé sans perte. Il est certes limité à 256 couleurs par image, mais dans le cas présent nous avons affaire à des dessins vectoriels avec des aplats de couleurs en nombre limité (pas de dégradé), donc ça ne pose pas de problème. Enfin, le système de compression LZW était breveté, mais les brevets sont montés au paradis du domaine public depuis belle lurette.
La commande magick permet facilement de prendre une série de PNG et de générer un GIF animé. L'option -delay permet de régler la durée entre deux images, en centièmes de secondes. Il a fallu pour cela récupérer le framerate dans le fichier CSV et faire le calcul avec la commande bc. L'option -loop 0 permet d'obtenir une boucle infinie :
magick -delay ${centiseconds} -loop 0 "${OUTPUT_DIR}/${gif_dir}/*.png" "${OUTPUT_DIR}/${gif_dir}/${name}-big.gif"
magick -delay ${centiseconds} -loop 0 "${OUTPUT_DIR}/${gif_dir}/*.png" -resize 40% "${OUTPUT_DIR}/${gif_dir}/${name}-medium.gif"
magick -delay ${centiseconds} -loop 0 "${OUTPUT_DIR}/${gif_dir}/*.png" -resize 16% "${OUTPUT_DIR}/${gif_dir}/${name}-small.gif"
J'ai utilisé l'option -resize pour obtenir des versions medium et small de chaque GIF. Dans un premier temps, j'avais utilisé Ruffle pour exporter en différentes tailles, mais faire faire le travail par ImageMagick à partir de la version haute résolution permet d'obtenir de petites images avec des contours lissés.
L'homme qui valait 350 millions (de francs)
C'est mon estimation : nous sommes encore loin des trois milliards, sachant qu'il reste 140 fichiers FLA à convertir. La reconstruction de l'homme bionique a à peine commencé. L'opération continue et on entre dans la partie délicate. Le format FLA, c'est le format Flash de travail, propriétaire, à partir duquel on exportait des SWF lisibles par les navigateurs.

Je vais contacter JC pour lui demander s'il se souvient quel logiciel il avait utilisé à l'époque et s'il a encore un vieux numéro de licence qui traîne quelque part. Il y a des chances que ce soit Macromedia Flash 4 (1999). En effet, Ruffle indique que les fichiers sont en SWF version 4 dans le CSV. De plus, le répertoire contenant les dessins de JC contient un fichier linux/muletux.exe, embarquant apparemment son propre Flash Player, et la commande strings --encoding={b,l} muletux.exe me permet de détecter les chaînes « Flash Player 4.0 » et « Copyright (C) 1996-99 Macromedia, Inc. ».
J'ai aussi repéré quelques projets à explorer sur GitHub concernant les FLA et XFL (fichiers non compressés), mais avec moins d'espoir que pour les SWF.
Enfin, le projet étant loin d'être abouti, je n'ai pas encore bien réfléchi à l'archivage de ces fichiers pour les siècles des siècles. Faut-il faire un dépôt sur une forge comme Codeberg ? Ou les déposer sur un site comme Wikimedia Commons ? Un par un :-( ? Quelle est votre opinion ? Avez-vous d'autres idées ?
Pour en savoir plus
- https://fr.wikipedia.org/wiki/Ruffle
- En anglais, to ruffle veut dire froisser, mais aussi ébouriffer, agiter, comme un oiseau qui secoue ses plumes.
- https://en.wikipedia.org/wiki/SWF
- https://en.wikipedia.org/wiki/Adobe_Flash
- https://usage.imagemagick.org/anim_basics/
- Exemple d'extraction des images d'un GIF animé :
magick linux-marche02-big.gif image.png

# Merci
Posté par Mimoza . Évalué à 4 (+2/-0).
Joli bouleau de restauration !
Je viens de regarder toutes les animations et elles sont sympathique.
Par contre, je pense qu’il y a un soucis de délai pour les GIF des T-shirts, ils sont bien trop rapide.
[^] # Re: Merci
Posté par vmagnin (site web personnel, Mastodon) . Évalué à 3 (+1/-0).
Oui, j'avais remarqué ça mais quand on joue le SWF directement, c'est pareil. Donc j'ai pris le parti de laisser les choses telles quelles. C'est peut-être une expérimentation non terminée par l'auteur…
Un petit
magick planche-win-etron-big.gif images.pngpermet d'extraire les quatre images, et c'est sûr que c'est plus intéressant ![^] # Re: Merci
Posté par vmagnin (site web personnel, Mastodon) . Évalué à 3 (+1/-0).
Idem pour
linux/gag_linux_02/gag_linux_02.swf. C'est une image fixe. Je l'ai traité quand même. On obtient donc un GIF inanimé si je puis dire.# Internet archive
Posté par pulkomandy (site web personnel, Mastodon) . Évalué à 6 (+3/-0).
C'est le genre de chose qui a tout à fait sa place chez https://archive.org, je pense?
[^] # Re: Internet archive
Posté par vmagnin (site web personnel, Mastodon) . Évalué à 3 (+1/-0).
Merci, c'est une bonne idée. J'imagine qu'il faut créer un compte pour pouvoir téléverser. Le défaut est probablement que les contenus de ce site ne doivent pas être référencés par les moteurs de recherche ?
# Zenodo ?
Posté par serol (site web personnel) . Évalué à 3 (+2/-0).
Puisque ces illustrations et animations pourraient constituer un objet de recherche (les communautés du logiciel libre du début des années 2000, les animations flash comme forme artistique, etc.), il serait peut-être légitime de faire un dépôt sur Zenodo : https://about.zenodo.org/
[^] # Re: Zenodo ?
Posté par vmagnin (site web personnel, Mastodon) . Évalué à 2 (+0/-0).
Voilà une idée originale ! Je me suis servi une fois de Zenodo pour obtenir un DOI en 2018. Il faudrait creuser ce qu'on peut y déposer. Je viens de me créer un compte : apparemment on peut déposer directement dessus, jusque 50 Go. On peut d'ailleurs choisir la licence Art Libre 1.3.
# Son
Posté par vmagnin (site web personnel, Mastodon) . Évalué à 2 (+0/-0). Dernière modification le 02 décembre 2025 à 21:09.
Pour le son, on devrait pouvoir l'extraire avec les swftools :
Il y a un paquet
swftools.x86_64dans Fedora.# Ruffle
Posté par Letho . Évalué à 3 (+1/-0). Dernière modification le 03 décembre 2025 à 13:23.
Merci pour Ruffle, je ne connaissais pas !
Je vais pouvoir rejouer à https://2darray.itch.io/you-find-yourself-in-a-room :)
[^] # Re: Ruffle
Posté par vmagnin (site web personnel, Mastodon) . Évalué à 2 (+0/-0). Dernière modification le 03 décembre 2025 à 19:21.
Dommage, je ne vois pas de copies d'écran ! Ah si, sur YouTube. C'est bizarre d'utiliser Flash pour un jeu d'aventure textuel…
Tu nous diras si l'extension Ruffle pour Firefox permet de le faire fonctionner :
https://addons.mozilla.org/en-US/firefox/addon/ruffle_rs/
[^] # Re: Ruffle
Posté par Letho . Évalué à 3 (+1/-0).
Alors :
# HowTo ?
Posté par Luc-Skywalker . Évalué à 3 (+1/-0).
Cette série de journaux "tuxeries" me fait immanquablement penser aux "Linux How To".
Je me souviens les avoir imprimés en loucedé avec le matos de la fac au point de remplir 2 ou 3 classeurs CENTRA.
… et je me souviens aussi les avoir balancés dans la benne à recyclage il y a dix ans environ (ils avaient déjà pas loin de 20 ans d'age).
Aujourd'hui, on dirait qu'ils ne sont plus dans les dépôts (J'ai pas regardé pour toutes les distribs mais c'est le cas pour Debian/Ubuntu/Fedora). Après, c'est normal, car qui utilise encore le port parallèle pour piloter une imprimante matricielle ou LILO pour démarrer le système),
C'est grave ?
nan, c'est pas grave docteur. Ils sont toujours là.
PS: je dis ça parce qu'au boulot il y a un traceur de plans de la mort (sur port parallèle, et avec de vrais ROTRING pour tirer les traits). Il prend tristement la poussière, car il n'y a plus personne pour le "piloter" (ni ordi, ni geek, ni volonté). On aurait laissé la vieille boite grise sous x486 + le vieux Linux + le vieux Samba, ça marcherait encore.
"Si tous les cons volaient, il ferait nuit" F. Dard
[^] # Re: HowTo ?
Posté par vmagnin (site web personnel, Mastodon) . Évalué à 2 (+0/-0).
C'était quand même bien complet.
Et comme c'est que du texte, ça devrait être entièrement sauvegardé dans la Wayback Machine.
Dommage, les plotters, c'est chouette :
https://piratefsh.github.io/2019/01/07/computer-art-history-part-2.html
T'as plus qu'à rajouter l'axe z pour en faire une imprimante 3D…
[^] # Re: HowTo ?
Posté par thoasm . Évalué à 4 (+1/-0).
C'est bien le cas, tldp est archivé : https://web.archive.org/web/20250617213910/https://tldp.org/HOWTO/HOWTO-INDEX/howtos.html
# Essai de publication d'une illustration postée sur Mastodon
Posté par vmagnin (site web personnel, Mastodon) . Évalué à 3 (+1/-0).
"WANTED
LINUX
This concept is dangerous"
JC, 2002, Free Art License 1.3
Envoyer un commentaire
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.