La livraison « fichier unique » après une séquence PNG se joue entre APNG (PNG animé) et GIF. Il s’agit d’arbitrer volume disque, cadence (FPS), transparence (alpha complète ou détourage) et compatibilité des lecteurs — pas de choix purement graphique. Ce guide 2026 propose une matrice décisionnelle, des paramètres copiables pour ffmpeg et gifsicle, et une checklist d’acceptation pour un worker distant type Mac mini M4, afin que chaque boucle soit documentée et rejouable.
Dans cet article
Scénarios et contraintes de livraison
Avant multiplexage, figez les invariants : plafond mégaoctets par actif, canaux (web, appli, e-mail — souvent GIF seul), besoin d’alpha partielle pour ombres nettes, et palier FPS (12 / 24 / 30). Alignez la couleur sur la même règle sRGB que pour les PNG statiques (sRGB / P3) : une séquence PNG correcte peut échouer si l’étape palette GIF déplace les tons sans note de bascule.
Source Lottie ou timeline : traiter la séquence comme couche de fabrication, comme dans la matrice Lottie → PNG — FPS, nombre de trames et nommage figés avant conversion. Si le site mélange WebP/AVIF et boucles animées, harmonisez avec WebP / AVIF / PNG.
Frottements typiques : promesse d’un fichier unique sans test messagerie ; budget CDN ignoré ; transparence validée uniquement sur fond clair — voir FAQ transparence designer.
| Contrainte | Garde-fou typique | Note |
|---|---|---|
| Budget octets | ≤ 300–800 Ko (sticker) |
Boucle ou FPS d’abord |
| FPS | 12 / 24 / 30 |
Plus de FPS = plus d’octets |
| Transparence | RGBA vs 1 bit | Alpha partielle : APNG |
| Boucle | N fois vs ∞ |
APNG -plays |
Tableau APNG vs GIF (volume, compatibilité, transparence)
Aucun format n’est systématiquement « plus léger ». Le GIF conserve la portée maximale ; l’APNG préserve souvent mieux détails et alpha complète car chaque trame reste un PNG. Les messageries et certains CMS filtrent l’APNG : validez dans les environnements réels avant d’engager une diffusion globale.
| Axe | APNG | GIF |
|---|---|---|
| Volume | Souvent bon si PNG compresse ; lourd si trames 1080p uniques | Compact en aplats ; lourd si tramage |
| Compatibilité | Navigateurs récents ; mail faible | Très large |
| Transparence | Alpha complète | 1 bit + palette ; halos possibles |
| Cadence | Délais par trame | Idem ; palette peut nuire au rendu |
| Couleur | PNG par trame | 256 couleurs |
Pour les contrôles alpha sur les sources PNG, prolongez la méthode de la FAQ transparence sur les trames début / milieu / fin, pas seulement sur une vignette.
Export par lots et étapes d’acceptation
Exécutez les encodeurs sur un worker dédié — idéalement un Mac mini M4 distant — pour ne pas saturer le portable où tournent Figma ou Xcode. Épinglez Homebrew et les versions d’outils dans un README ; les préréglages GUI sans équivalent scripté restent non reproductibles pour la QA contractuelle.
Séquence PNG → APNG (ffmpeg)
Trames frame_00001.png … dans ./inbox. -framerate suit le contrat (ex. 24 FPS). -plays 0 boucle sans fin ; -plays 1 pour une lecture unique.
# PNG animé à partir d’images numérotées (macOS / ffmpeg Homebrew)
cd inbox
ffmpeg -y -framerate 24 -i "frame_%05d.png" -plays 0 -f apng ../out/boucle_hero.apng
Réduction sips/mogrify si spec : export 4K par lots.
Séquence PNG → GIF (ffmpeg + palette)
palettegen ; ajuster fps=, scale=.
# GIF avec palette générée (ex. 24 ips, largeur max 720)
ffmpeg -y -framerate 24 -i "frame_%05d.png" -vf "fps=24,scale=720:-1:flags=lanczos,split[s0][s1];[s0]palettegen=max_colors=128[p];[s1][p]paletteuse" ../out/boucle_hero.gif
Post-optimisation GIF (gifsicle)
gifsicle -O3 --colors 128 -o ../out/boucle_hero_opt.gif ../out/boucle_hero.gif
Si la première trame n’est pas l’index 1, ajoutez -start_number N avant -i. Vérifiez largeur, hauteur et durée avec ffprobe sur le fichier livré.
Le multiplexage et palettegen sont gourmands en CPU : un répertoire par SKU sous out/, journal jobs.jsonl, et la même discipline de files que pour l’optimisation PNG statique décrite dans optimisation PNG sur Mac distant.
Checklist d’acceptation batch (M4 distant)
- Dimensions :
ffprobeoumagick identifysur la sortie = WxH de spec ±0 px. - Durée / trames : durée attendue ≈
nombre_de_trames / FPSavec tolérance d’une trame documentée. - Plafond octets :
stat -f%z(macOS) sous lemax_bytesd’équipe. - Transparence : GIF — vérifier la couleur de matting sur fond clair et sombre ; APNG — échantillonner RGBA sur trames clés (comparatif transparence Figma/Sketch).
- Manifeste : versions
ffmpeg/gifsicle, liste sha256 des entrées, pass/fail — esprit QA PNG batch OpenClaw.
FAQ (dérives de couleur, volume excessif)
Dégradés « boueux » après GIF. Vous heurtez la limite de palette. Réduisez le flou en amont, aplatissez les couleurs dominantes avant palettegen, raccourcissez la boucle, ou basculez en APNG. Pour une marque attachée au sRGB mesurable, verrouillez d’abord les masters (ICC et recompression sans perte) plutôt que de corriger le gamma uniquement côté GIF.
Fichier trop volumineux. Diminuer le FPS (30 → 24 → 12), réduire les dimensions, supprimer les poses redondantes, ou scinder en deux livrables. GIF : baisser max_colors puis relancer gifsicle -O3. APNG : vérifier l’absence de trames PNG 16 bits inutiles — mêmes garde-fous que pour les lots statiques (ImageOptim vs CLI).
QA lecture : matrice minimale Safari, Chrome et WebView cible ; si le GIF part en e-mail, inclure un client « pire cas » et archiver captures + décision dans le manifeste pour les relecteurs distants.
Passer à l’action : louer un Mac M4 pour l’encodage animé
Parcourez la page d’accueil MacPng, puis les options de location et les tarifs & nœuds — comparaison possible sans compte obligatoire. Le guide SSH/VNC permet de monter un worker et d’y déporter de longues files ffmpeg. Autres guides design : liste du blog, paramètres PNG Affinity / Sketch / Figma, matrice icônes iOS PNG.
Multiplexer et contrôler sur un Mac distant
Déportez ffmpeg et gifsicle sur un M4 stable, gardez manifestes et plafonds octets alignés, et livrez des animations sans bloquer le poste design.