Journal Réanimation des tuxeries

Posté par  (site web personnel, Mastodon) . Licence CC By‑SA.
25
30
nov.
2025

Sommaire

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.

Work in progress

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

  • # Merci

    Posté par  . É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  (site web personnel, Mastodon) . Évalué à 3 (+1/-0).

      Par contre, je pense qu’il y a un soucis de délai pour les GIF des T-shirts, ils sont bien trop rapide.

      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.png permet d'extraire les quatre images, et c'est sûr que c'est plus intéressant !

    • [^] # Re: Merci

      Posté par  (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  (site web personnel, Mastodon) . Évalué à 6 (+3/-0).

    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 ?

    C'est le genre de chose qui a tout à fait sa place chez https://archive.org, je pense?

    • [^] # Re: Internet archive

      Posté par  (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  (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  (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  (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 :

    SWFExtract: Allows to extract Movieclips, Sounds, Images etc. from SWF files.

    Il y a un paquet swftools.x86_64 dans Fedora.

  • # Ruffle

    Posté par  . É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 :)

  • # HowTo ?

    Posté par  . É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.

    from cdiscount

    … 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

  • # Essai de publication d'une illustration postée sur Mastodon

    Posté par  (site web personnel, Mastodon) . Évalué à 3 (+1/-0).

    Titre de l'image

    "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.