Public : équipes design-ops et automatisation qui livrent des PNG depuis Figma, Sketch, navigateurs ou chaînes photo et constatent une orientation incohérente selon les visionneuses — souvent une balise EXIF Orientation (chunk PNG eXIf ou équivalent) jamais normalisée. Sur un Mac distant, OpenClaw peut encapsuler les mêmes étapes shell : écouter l’inbox, lire la balise, appliquer une rotation physique sans rééchantillonnage lorsque c’est nécessaire, réinitialiser les métadonnées selon la politique, puis publier sous un nom déterministe. Installation de base : guide d’installation OpenClaw (toutes plateformes). Pour files d’attente et journaux : watch PNG, retry et archive JSONL et chaîne CLI PNG et retry sur Mac.
Sommaire
Plan de maillage interne (SEO / exploitation)
Chaque cible prolonge ce tutoriel sans répéter l’installation ; gardez ces URL dans votre runbook d’équipe.
- Installation : guide OpenClaw multi-plateforme
- Watch + JSONL + retry : surveillance dossier, retry et logs
- Chaînes CLI : templates de chaîne PNG
- Couleur après rotation : pipeline ICC, watch et renommage et métadonnées PNG, ICC et recompression sans perte
- Nommage / validation : nommage auto et validation batch
- Jeux multi-tailles : watch folder vers séries PNG
- Ingestion proche : HEIC → PNG surveillé
Pourquoi l’orientation PNG échappe encore aux pipelines
- Couche de rendu : certains outils appliquent la balise Orientation à l’affichage, d’autres lisent les pixels bruts — d’où des écarts entre Preview, navigateur et scripts.
- Exports fragmentés : fichiers temporaires, renommages rapides et synchronisation cloud déclenchent des watchers trop tôt et corrompent les passes suivantes.
- Coût caché : sans Mac dédié, les designers interrompent des lots pour regagner la machine ; les sessions SSH non interactives oublient souvent le
PATHHomebrew. - Politique métadonnées : normaliser ou supprimer l’EXIF sans documenter le choix expose à des doubles rotations ou à la perte d’ICC embarqué.
OpenClaw / passerelle : déploiement minimal
Sur le Mac distant, visez une surface réduite : un utilisateur service, une version OpenClaw figée, une passerelle qui répond sur 127.0.0.1 uniquement. Suivez le guide d’installation, placez les secrets dans un fichier chmod 600, et validez curl -sS http://127.0.0.1:<port>/health depuis une session ssh user@hôte bash -lc '…' — le même contexte que launchd.
- Propriété des processus : watcher et worker partagent l’UID qui possède
inbox/etout/. - TCC : si la lecture échoue, ajoutez le binaire exact sous Réglages système → Confidentialité et sécurité → Accès disque complet.
- Périmètre réseau : ne publiez pas la passerelle sur Internet ; préférez un tunnel SSH pour déclencher des jobs distants.
- Frontière skill : encapsulez lecture EXIF et rotation dans un script testable hors boucle agent.
which magick exiftool, magick -version et exiftool -ver depuis le même wrapper que le watcher invoque.
Stratégie d’écoute des dossiers
Les outils design écrivent souvent en deux temps. Pointez les exports vers une inbox dédiée, par ex. ~/png_jobs/design_export/inbox sur SSD local — pas Bureau iCloud ni partage SMB — pour éviter PNG tronqués et latence de sync. Réutilisez l’arborescence décrite dans watch folder → séries PNG : inbox, work, out, failed, logs.
Règles qui survivent au studio :
- Filtre
*.png; ignorez.DS_Store,*.tmp,*.crdownload. - Taille stable : deux
statidentiques espacés de 500 ms avant enqueue. - Debounce : 1–3 s avec
fswatch; ouWatchPathslaunchd+ script retardé. - Rafales : attendez 30–60 s sans nouveau PNG, puis drainez trié — comme dans le pipeline ICC surveillé.
- File unique : un worker sérialise les exports concurrents de façon déterministe.
Déclencheur reproductible (fswatch) :
INBOX=~/png_jobs/design_export/inbox
fswatch -o "$INBOX" | while read -r; do
sleep 2
/usr/local/bin/votre_worker_png_exif_rotation.zsh
done
Alternative launchd : WatchPaths sur l’inbox et wrapper qui dort 1–3 s avant d’appeler le worker — documentez le chemin du plist dans le dépôt.
Flux de traitement EXIF Orientation
Les valeurs 1–8 décrivent rotations et miroirs attendus par les visionneuses. Votre automatisation doit lire la balise avant toute transformation : passage direct, rotation ou quarantaine.
Lecture numérique :
exiftool -n -Orientation -s3 "$PNG"
Si la sortie est vide ou 1, les pixels sont en général déjà « droits » pour les pipelines bitmap ; croisez largeur/hauteur avec le brief. Les valeurs 3, 6, 8 impliquent une rotation classique ; les valeurs 2, 4, 5, 7 introduisent un miroir — exigeant une politique explicite (souvent rejet pour les assets de marque).
| Balise Orientation | Action recommandée | Notes |
|---|---|---|
| Absente ou 1 | Pas de rotation ; strip EXIF ultérieur optionnel | Les PNG UI n’ont souvent aucun EXIF — ne présumez pas une chaîne photo. |
| 3, 6, 8 | magick … -auto-orient puis normaliser la balise |
Pixels physiquement droits pour les consommateurs « naïfs ». |
| 2, 4, 5, 7 | Quarantaine ou script flop+rotate documenté | Évite les retournements involontaires dans les campagnes. |
Après rotation, fixez Orientation=1 avec exiftool -overwrite_original -Orientation=1 ou retirez l’EXIF selon votre runbook métadonnées & ICC afin d’éviter une double application.
Rotation sans perte par lot, nommage et archivage
Ici « sans perte » signifie : pas de rééchantillonnage couleur arbitraire ; les rotations 90°/180° sur PNG préservent en principe la profondeur de bits, mais la recompression peut changer les octets. Si vous promettez une livraison strictement identique, validez sur un jeu d’or — voir recompression sans perte documentée.
Fichier unique (ImageMagick 7) :
magick "$IN" -auto-orient "$OUT"
exiftool -overwrite_original -Orientation=1 "$OUT"
Esquisse de boucle batch (zsh) — skill OpenClaw ou LaunchAgent :
inbox=~/png_jobs/design_export/inbox
out_root=~/png_jobs/design_export/out/$(date +%F)
mkdir -p "$out_root"
for f in "$inbox"/*.png; do
[ -f "$f" ] || continue
ori=$(exiftool -n -Orientation -s3 "$f" 2>/dev/null || echo "")
[[ -z "$ori" || "$ori" == "1" ]] && cp -p "$f" "$out_root/$(basename "$f")" && continue
base=$(basename "$f" .png)
magick "$f" -auto-orient "$out_root/${base}_rot_v01.png"
exiftool -overwrite_original -Orientation=1 "$out_root/${base}_rot_v01.png"
done
Alignez les noms avec nommage auto et validation : suffixe _rot_v01 seulement lorsque les pixels changent. Ajoutez une ligne JSONL (sha256_before, sha256_after, orientation_in, durée ms) par fichier, comme dans le guide watch / retry. Enchaînez ensuite les contrôles ICC du pipeline ICC : une chaîne mal configurée peut retirer le profil embarqué après rotation.
Repères opérationnels (à citer en revue de livraison) :
- 1–3 s de debounce et 500 ms entre deux mesures de taille pour valider la fin d’écriture.
- 30–60 s de fenêtre calme avant drainage d’une rafale multi-export Figma.
- Trois tentatives de retry avec backoff 5 s / 20 s / 60 s pour erreurs transitoires disque — au-delà, classez dans
failed/avec sidecar JSON.
FAQ — erreurs fréquentes
exiftool répond « Unknown file type » alors que Preview ouvre le PNG.
Vérifiez zéro octet, mauvaise extension ou volume illisible pour le binaire sandboxé. Contrôlez l’en-tête xxd -l 8 (attendu 89 50 4E 47) et exécutez exiftool sous le même utilisateur que le watcher.
-auto-orient ne change rien mais l’aperçu reste penché.
Certains outils n’enregistrent l’orientation que dans des métadonnées ignorées par votre pipeline, ou l’export est sans EXIF. Ne pivotez pas sans confirmation humaine ou sans balise explicite.
401 sur la passerelle — la rotation ne part jamais.
Jeton absent dans l’environnement launchd : sourcez openclaw.env dans le wrapper ou déclarez EnvironmentVariables dans le plist.
Les octets ont changé après magick — est-ce un échec ?
Pas forcément : la recompression PNG modifie la taille fichier. Comparez les pixels décodés ou appliquez une politique de hachage perceptuel approuvée par la conformité marketing.
Operation not permitted sur l’inbox.
macOS bloque le binaire : accès disque complet, cohérence UID/propriété, chemins absolus — reprenez la même analyse que pour les pipelines ICC + watch.
Synthèse : traitez l’EXIF Orientation comme une donnée à lire avant toute mutation de pixels ; combinez écoute debouncée et garde taille stable sur une inbox Mac distant ; appliquez magick -auto-orient puis Orientation=1 lorsque vous corrigez réellement l’image ; archivez sous out/AAAA-MM-JJ/ avec JSONL pour rejouer la même skill OpenClaw demain. Lorsque vous avez besoin d’un nœud Apple Silicon toujours prêt pour l’automatisation d’assets — sans monopoliser un portable — parcourez les pages publiques MacPng : achat / location, tarifs et nœuds, aide SSH / VNC et accueil, le tout sans connexion obligatoire. Poursuivez avec le blog design & automatisation pour ICC, QA PNG et autres playbooks.
Exécuter OpenClaw (EXIF + rotation) sur un Mac distant dédié
Pour aller plus loin : installation OpenClaw, watch & retry, ICC & métadonnées PNG.