Flux de travail

Comment combiner les fonctions pour la presse, une course entière, le mariage, le sport, le studio, le paysage et les scripts.

Sur cette page
1:10
Commenté en anglais, avec sous-titres. Lu depuis YouTube lorsque vous lancez la lecture.

Des situations réelles qui montrent comment combiner les fonctions de FLOGVIT.photosuite selon le type de photographie.

Settings, Workflow : un flux est une liste d’étapes que traverse chaque image, de son arrivée à son envoi.
Settings, Workflow : un flux est une liste d’étapes que traverse chaque image, de son arrivée à son envoi.

Presse et actualité#

La boîte d’importation : d’où viennent les images, où elles vont et comment elles s’appellent, et les métadonnées écrites dans chacune.
La boîte d’importation : d’où viennent les images, où elles vont et comment elles s’appellent, et les métadonnées écrites dans chacune.

Le chemin le plus rapide de la carte mémoire à l’image publiée.

  1. Importation — Insérez la carte. FLOGVIT.photosuite la détecte tout seul. Importez avec un modèle IPTC prérempli (publication, photographe, événement).
  2. Premier passage — Vue unique avec avance automatique (Shift+A). Appuyez sur P pour retenir, X pour rejeter. Ne réfléchissez pas trop — la vitesse compte.
  3. Filtrer les retenues — Option+P n’affiche que les retenues.
  4. IPTC — Ajoutez légendes et mots-clés à votre sélection (Cmd+E). Copy IPTC Metadata et Paste IPTC Metadata reportent une légende sur le reste d’une série.
  5. Envoi — Appuyez sur U sur chaque image pour l’envoyer par FTP. Les envois tournent en arrière-plan.
  6. Carte suivante — Insérez la carte suivante pendant que les envois continuent. L’importation et les envois tournent côte à côte.

La mission complète, avec un script qui envoie chaque photo retenue à la rédaction au moment où vous la retenez, est dans De la carte à la rédaction.

Une course entière après la journée#

Quand les photographes remettent leurs images après un événement, chacun dans son propre dossier (in/Kari Foto/, in/Per Berg/), une seule exécution livre le tout.

Settings → Workflow → From Template… : les workflows prêts à l’emploi, chacun un point de départ que vous adaptez au travail.
Settings → Workflow → From Template… : les workflows prêts à l’emploi, chacun un point de départ que vous adaptez au travail.
  1. Créez un flux à partir de Newspaper: whole event, HD with names (ou Relay: whole event, 4K with numbers pour un relais dont les numéros sont livrés sans noms). Dans son étape Identify, récupérez la liste de départ ou ajoutez son dossier. Quand deux courses ont été photographiées sur les mêmes cartes, donnez à chaque course son propre flux et mettez la liste de départ de l’autre course sous Also on the cards. Chaque numéro est alors pesé face aux deux listes, et chaque flux ne nomme que sa propre course.
  2. Deliver → Deliver Event Folder… : choisissez le flux, le dossier d’images (le in/ de l’événement), où livrer (à côté de in/ par défaut) et le crédit (par ex. Jærbladet). Une image dont l’appareil n’a pas de photographe reçoit le nom du dossier comme auteur, et « © Kari Foto / Jærbladet » comme copyright. Les images posées directement dans le dossier de l’événement, hors du dossier d’un photographe, reçoivent le nom indiqué sous Photographer.
  3. Start. La boîte compte les images au fur et à mesure, avec et sans numéros, et liste les échecs. La livraison arrive dans delivered/with-numbers/ et delivered/without-numbers/ (la variable {identified} dans le dossier de l’étape Export). Chaque image qui a un nom a un .txt à côté d’elle.
  4. Examinez ce qui a été retenu (Filter → Numbers → Needs review, voir Dossards), puis relancez le dossier. Ce que vous avez tranché est gardé, et la lecture de chaque image est mémorisée, donc une deuxième exécution ne relit rien.

Par l’API : POST /api/workflows/run-on-folder avec workflow et folder (et org, photographer), GET sur le même chemin pour la progression, DELETE pour arrêter (SDK : client.runOnFolder).

Les images prises par d’autres#

Deliver → Download Album… récupère un album entier dans un dossier, prêt pour Deliver Event Folder :

  • un album Flickr public (sans compte) : chaque image sous le nom que lui a donné l’appareil du photographe, sinon son titre. Avec One folder per photographer, le premier mot du titre devient le dossier (Grete Jonsson-12 → Grete/). La plus grande taille que produit Flickr est prise plutôt que l’original, car Flickr limite ce qu’on peut récupérer et un original épuise cette limite cinq fois plus vite. Quand Flickr refuse, l’application ralentit et réessaie ; elle ne saute jamais une image. Une image déjà dans le dossier n’est pas récupérée à nouveau, donc un téléchargement interrompu reprend là où il s’était arrêté ;
  • une galerie SmugMug que votre connexion SmugMug peut voir, par son lien ou son identifiant de nœud, dans un dossier au nom du photographe. Chaque image arrive dans sa taille 4K, qui donne les mêmes numéros que l’original pour un dixième de la taille ; Originals récupère les originaux.

Par l’API : POST /api/albums/download.

Le site de galerie d’un événement livré (jaerbladet.menneske.no et les galeries de courses) lit un manifest.json par événement. Deliver → Build Race Gallery… l’écrit à partir du dossier de l’événement (par l’API : POST /api/event-site) : chaque image livrée avec ses tailles depuis la galerie SmugMug (ou des tailles écrites à côté du manifeste), qui y figure, les cadres de personnes sur lesquels recadre la vue mobile, les choix de la rédaction en premier, et les index par lesquels le site cherche par numéro, épreuve, club et photographe. Un numéro sur une image qu’aucune entrée de la liste de départ ne porte arrête la construction, plutôt que d’afficher un numéro sans nom. Un relais dont le dossier d’événement contient photographers.json (le nom de chaque photographe et sa place sur le parcours) reçoit plutôt la galerie de relais : équipes et entreprises, et images par lieu le long du parcours. Un photographe absent de ce fichier, ou un lieu hors du parcours, arrête la construction plutôt que de créditer une image à personne. Les noms de fichiers du relais portent le photographe (<slug>-<n>.jpg), puisque SmugMug ne voit jamais les dossiers.

Deux choix dans la même fenêtre utilisent la netteté propre à chaque coureur dans une image à plusieurs, tirée du journal d’Identify : Leave a runner out of their gallery where they are soft retire le dossard d’une image où ce coureur est lu moins de deux fois moins net que la personne la plus nette, et List each runner's pictures sharpest on them first classe les images de chaque coureur selon sa netteté sur chacune. Les deux sont désactivés par défaut (dans l’API : softRunnerShare et sharpestFirst).

Le meilleur de l’année#

Deliver → Pick the Year's Best… choisit les meilleures images d’un événement livré dans <event>_best/, nommées par rang, avec best.json qui dit pourquoi chacune a été choisie. Chaque lieu est classé face à lui-même (une ligne d’arrivée est plus facile à photographier qu’une zone de relais). Chaque photographe reçoit d’abord une image, puis chaque lieu sa part, puis le reste est choisi sur la qualité, avec un plafond par lieu. Une équipe apparaît une fois et une entreprise au plus deux fois. Apple Vision donne les notes esthétiques et de visage, il faut donc macOS 15 ou plus récent ; sous Windows, ce n’est pas encore là. Un modèle de vision local, si vous en indiquez un, juge la scène, l’expression et l’histoire de la présélection et écrit une courte légende en norvégien, mais on ne lui demande jamais de nom : les équipes viennent de la liste de départ.

Pour revoir : supprimez du dossier _best les images avec lesquelles vous n’êtes pas d’accord et relancez le choix. Les images supprimées ne reviennent jamais, celles que vous avez gardées gardent leur place, et seules les places libérées sont remplies. Par l’API : POST /api/best-of-year.

Une compétition montrée en direct#

Quand les photographes envoient leur sélection à un serveur FTP pendant l’événement, photosuite peut débruiter, recadrer et redresser chaque photo, la mettre en vente sur eventphotos et l’afficher sur la télévision de la salle, sans que personne n’y touche.

Settings, Connections : les serveurs et services auxquels les images sont envoyées, chacun avec son dossier et sa connexion.
Settings, Connections : les serveurs et services auxquels les images sont envoyées, chacun avec son dossier et sa connexion.
  1. Le workflow. Settings → Workflow → From Template… → Live event: FTP → DxO → album. Choisissez la connexion FTP et le dossier dans Ingest, le profil DxO dans Denoise et un nom d’album dans Add to Album (par ex. NM kortbane).
  2. L’album sur eventphotos. Clic droit sur l’album dans le panneau Library → Publish to… → l’événement. Chaque photo que le workflow ajoute part d’elle-même : quand les photos ne cessent d’arriver, au plus tard une minute après la première en attente.
  3. La télévision. L’app TV d’eventphotos affiche la page en direct de l’événement, /e/<event>/live.
  4. Start Workflow. Les photographes envoient leur sélection dans le dossier FTP.

Chaque photo reçoit Auto : le détail réel le plus clair placé en haut sans l’écrêter, les LED de la salle laissées de côté, les visages dans la bande de peau de la forme d’onde et relevés avec Lift quand ils tombent en dessous, et le point noir réglé pour chaque photo. Les fichiers sous-exposés pour une vitesse rapide et ceux bien exposés sortent en une série, parce que chacun reçoit ce qu’il lui faut. Rien à régler ; dans l’étape Develop du workflow, un preset se choisit sous Look for unedited files, et Auto for each unedited file se désactive.

Chaque photo est recadrée en 3:2 (2:3 si l’appareil était tenu à la verticale) autour du nageur sur lequel l’appareil a fait la mise au point (d’après le point de mise au point de l’appareil, même là où personne n’est détecté dans l’eau), avec tout le nageur (la tête, les bras, les épaules et les éclaboussures devant), placé selon les règles de composition avec de l’air autour et jamais plus petit qu’un tirage A4, et redressée selon les lignes de l’image. Le recadrage part sur eventphotos comme une retouche, qu’un acheteur peut élargir ; la photo entière est le fichier écrit par DxO. Une photo qui a échoué se trouve dans le dossier failed/ du workflow, avec la raison.

Ce qu’écrit l’étape Export#

L’étape Export d’un flux écrit ce qu’écrit la boîte d’exportation. Choisissez un profil d’exportation enregistré (ou les valeurs par défaut), et réglez à sa place le format, la qualité, la profondeur de bits, l’espace colorimétrique ou les métadonnées : tous les formats et espaces que propose la boîte d’exportation, ou une copie du fichier. Les tailles supplémentaires et l’accentuation du profil suivent. Sans profil ni choix de métadonnées, le fichier livré porte ce qu’y ont mis les étapes propres au flux (Identify, Inject Metadata), comme avant. L’export() d’un script prend les mêmes champs.

Partager un workflow#

Un workflow peut passer sur une autre machine, ou chez un autre photographe, sous la forme d’un seul fichier. Dans Settings → Workflows, sélectionnez-le et cliquez sur Export…. Il est enregistré sous <name>.photosuite-workflow, avec les connexions, le profil de débruitage, le modèle IPTC et le profil d’export qu’utilisent ses étapes. Aucun mot de passe, jeton ou clé n’entre dans le fichier, ni le dossier de travail, ni l’adresse d’un webhook : on peut l’envoyer sans crainte.

Import… sur l’autre machine l’ajoute. Une connexion ou un profil que cette machine possède déjà, sous le même nom et pointant au même endroit, est utilisé tel quel ; tout le reste est ajouté à côté sous un nom libre (Desk 2), et les étapes suivent. Rien n’y est écrasé. Ensuite, il indique ce qu’il reste à remplir avant que le workflow puisse tourner : les mots de passe des connexions apportées, le dossier de travail, l’adresse d’un webhook.

Par l’API : GET /api/workflow/profiles/{index}/export et POST /api/workflow/profiles/import (SDK : client.workflow.exportFile, client.workflow.importFile). Les workflows partagés par d’autres photographes, et ceux fournis avec l’application, sont dans la collection de scripts.

Surveiller un workflow en cours#

Un workflow laissé en marche lors d’un événement peut cesser de faire son travail tout en affichant qu’il tourne : les photos arrivent et rien n’est livré, une étape échoue sur chaque photo, les envois attendent une heure, le disque se remplit. Activez Settings → Workflow → Watch with Claude, et photosuite surveille le workflow pendant qu’il tourne :

  • Des règles, tout de suite et gratuitement : rien de livré pendant quelques minutes alors que des photos arrivent, une étape qui échoue sur trois photos de suite, un envoi qui attend plus longtemps que permis, moins d’espace disque que permis, et un workflow qui s’arrête de lui-même.
  • Claude, à heures fixes, avec votre propre clé Claude : les faits comme données — ce qui est arrivé, ce que chaque étape a fait aux dernières photos (le recadrage et ce qu'il cadre, l'exposition, les numéros lus et les noms donnés) et ce qui est parti (taille, octets, légende et titre) — pour voir ce qu'une règle ne voit pas : chaque photo dans la même petite taille, un recadrage bien plus petit que les autres, des numéros lus sans que personne soit nommé, des légendes laissées vides, la même photo envoyée deux fois. Le réglage affiche les appels par heure et ce que coûte une journée d'événement de dix heures ; 0 minute n'interroge que les règles. Avec Montrer les photos à Claude activé, il voit aussi une planche contact des photos livrées depuis la dernière vérification et les juge comme le ferait un éditeur photo : un recadrage qui coupe quelqu'un, une photo bien trop sombre, la même image encore. Un constat portant sur des photos ouvre la première d'un clic dans la barre d'infos.

Ce qu’il trouve s’affiche dans la barre d’informations (que faire, au survol), arrive en notification du système et part comme l’événement watch_finding : un webhook sur cet événement l’envoie à votre téléphone. Les scripts le lisent avec GET /api/watch (client.workflow.watch()) et le modifient avec PUT /api/watch.

Ce que le workflow a fait à chaque photo est conservé, les 5 000 dernières par défaut (Settings → Workflow) : ce que chaque étape a fait (le recadrage et ce qu'il cadre, les valeurs du développement, les numéros lus et les noms donnés, le fichier écrit et où il est allé), quand la photo est arrivée et a été terminée, et la première étape qui a échoué. Un script ou une session Claude le lit avec GET /api/workflow/files?since=<id> (client.workflow.files({ since })), et reçoit chaque étape et chaque photo terminée au fur et à mesure dans les événements workflow_step_completed et workflow_file_completed. Les photos aussi : GET /api/workflow/files/{id}/picture donne la photo qui est partie, ou avec stage=source celle qui est arrivée, à une taille qu'un modèle lit bien, et GET /api/workflow/files/sheet une planche contact des dernières avec l'id de la fiche sous chacune (client.workflow.picture, client.workflow.sheet).

Piloter un workflow en cours#

Quand quelque chose ne va pas en plein événement (un recadrage qui rate, une légende avec la mauvaise course), il n'est pas nécessaire d'arrêter le workflow :

  • Pause : Deliver → Pause Workflow (Cmd+Option+P), le bouton pause de la barre d'infos, ou Mettre le workflow en pause dans Settings → Workflow. Les photos continuent d'arriver et attendent ; la barre d'infos dit combien. Corrigez le workflow, puis reprenez.
  • Relancer une photo : Relancer à côté de la photo dans Settings → Workflow. Elle passe avant toute nouvelle photo, même en pause. Un script peut fixer un recadrage, une exposition, les numéros ou une légende pour cette photo seule. Un stockage de fichiers et un album reçoivent la nouvelle photo à la place de la première ; Dropbox, Google Drive et Flickr la reçoivent à côté ; SmugMug garde un nom qu'il a déjà. La réponse dit lequel.
  • Retenir une photo : Retenir à côté de la photo. Elle est retirée de la file de nouvelles tentatives ou d'un dossier de livraison local (vers held/ dans le dossier de travail) et de ses albums, masquée là où ils sont publiés. Ce qui est déjà parti vers un serveur est signalé, pour être retiré là-bas. Libérer remet tout en place.

Par l'API : POST /api/workflow/pause et /resume, POST /api/workflow/files/{id}/rerun avec crop, ev, bibs ou caption, POST /api/workflow/files/{id}/hold avec reason (et by), et /release (SDK : client.workflow.pause, resume, rerun, hold, release).

Les corrections instruisent le passage suivant. Une photo relancée avec un autre recadrage ou une autre exposition, ou retenue, est gardée comme correction : ce que le workflow a fait, ce que c'est devenu, pourquoi et par qui. Le recadrage automatique apprend d'un recadrage corrigé comme des vôtres, et les corrections d'exposition d'une forme de développement (un préréglage, ou Auto) déplacent l'exposition des photos suivantes. Elles sont listées sous Corrections dans le panneau Library, où l'on peut en retirer une avec ce qui en a été appris (GET/DELETE /api/library/corrections). Settings → Workflow désactive l'apprentissage.

Après l'événement, le rapport. Chaque passage garde ce qu'il a fait : combien de photos sont arrivées et parties (et où), lesquelles ont été retenues et pourquoi, lesquelles ont été relancées, ce qui a échoué et à quelle étape, le temps de l'arrivée à la fin, ce que la surveillance a trouvé, et les notes qu'une session Claude ou un script y a écrites (POST /api/workflow/notes). Il s'affiche dans Settings → Workflow, même après l'arrêt, est enregistré sous report-<start>.html dans le dossier de travail à l'arrêt, et se lit avec GET /api/workflow/runs.

Mariage#

Trier des milliers d’images sur toute une journée de mariage.

  1. Importation — Copiez à la fois sur le disque de travail et sur une sauvegarde. Utilisez le modèle de dossier {image_date}/{camera} pour séparer les boîtiers.
  2. Vue d’ensemble — Vue grille (G) pour parcourir la journée. Utilisez les libellés de couleur pour la cérémonie (6 rouge), la réception (7 jaune), les portraits (8 vert) et les détails (9 bleu).
  3. Notes — Passez en vue unique. Donnez 3 à 5 étoiles aux meilleures images. Utilisez l’avance automatique.
  4. Comparaison — Pour des vues semblables (photos de groupe, moments de la cérémonie), appuyez sur C pour comparer côte à côte. Faire défiler zoome les deux images ensemble, pour vérifier la netteté au même endroit.
  5. Recadrage automatique — Pour les photos de groupe dont vous voulez aussi des portraits individuels, le recadrage automatique crée tout seul des recadrages par personne.
  6. Métadonnées — Modifiez l’IPTC de toute la sélection avec les noms des mariés, le lieu et la date. Utilisez la copie d’IPTC pour reporter les métadonnées entre vues semblables.
  7. Exportation — Filtrez sur 4 étoiles et plus (Option+4) et exportez au format Original avec Copy XMP sidecar files vers un dossier « sélection » pour les retoucher dans Lightroom ou Capture One. Les notes voyagent dans les fichiers annexes.

Sport#

Survey : quatre vues à la fois. Celle qui part est rarement évidente face à une autre image, et en général évidente face à trois.
Survey : quatre vues à la fois. Celle qui part est rarement évidente face à une autre image, et en général évidente face à trois.

Prise de vue en rafale à un rythme élevé, avec des centaines d’images par action.

  1. Importation — Importez depuis la carte avec vérification par somme de contrôle. Renommez au passage en {image_date}_{seq:4}.
  2. Parcours en grille — Vue grille avec de grandes vignettes. Repérez vite les séquences d’action.
  3. Tri par netteté — View → Sort → Sharpness, décroissant. Les images floues tombent en bas.
  4. Survey — Appuyez sur N pour voir 3 ou 4 images semblables à la fois. Choisissez le sommet de l’action.
  5. Notation rapide — Vue unique et avance automatique. Donnez 3 étoiles ou plus à celles que vous gardez. Rejetez les floues.
  6. Recadrage automatique — Recadrez serré autour des athlètes pour le web.
  7. Légende et envoi — Ajoutez des légendes rapides, puis U vers le FTP.

Studio et produit#

Conditions maîtrisées, l’accent sur la régularité et le détail.

  1. Connexion ou importation — Ouvrez directement le dossier de la séance. Les images apparaissent au fil des prises de vue.
  2. Loupe — Dans la grille, maintenez Space et survolez pour vérifier les détails à 100 %. Contrôlez la mise au point et la netteté.
  3. Comparaison — C pour comparer les variantes d’éclairage côte à côte avec le zoom synchronisé.
  4. Libellés de couleur — Libellez par installation : rouge pour l’installation A, jaune pour la B, etc.
  5. Exposition — Gardez le panneau latéral ouvert (I) pour suivre l’exposition d’une vue à l’autre. Activez la surimpression d’écrêtage (J) pour repérer les hautes lumières brûlées.
  6. Métadonnées — Mettez les noms de produits, références et mots-clés sur la sélection dans l’éditeur IPTC.
  7. Exportation — Copiez la sélection dans le dossier du retoucheur en la renommant selon la convention du catalogue produits.

Paysage et voyage#

De gros volumes de voyages sur plusieurs jours, avec des appareils et objectifs variés.

  1. Importation — Utilisez le modèle de dossier {image_year}/{image_month}/{image_day} pour un classement chronologique. Appliquez le tracé GPS de votre téléphone pour géolocaliser les images.
  2. Filtrer par appareil — Si vous travaillez avec plusieurs boîtiers, choisissez-en un dans la colonne de filtre Camera (</kbd>) pour revoir chaque boîtier séparément.
  3. Notes — Premier passage : marquez les rejets évidents (X) et les retenues fortes (P). Second passage : affinez avec les étoiles.
  4. Filtrer par lieu — Sur la carte, Maj-glissez autour d’un lieu pour ne garder que les images prises là, ou choisissez un lieu dans la colonne de filtre Place.
  5. Carte du bruit — Pour les vues de crépuscule et de nuit à ISO élevé, regardez la carte du bruit (H) pour décider quelles images ont besoin d’un débruitage.
  6. Débruitage — Envoyez la sélection à ISO élevé à votre outil de débruitage directement depuis FLOGVIT.photosuite (Shift+N).
  7. Mots-clés — Appliquez des mots-clés hiérarchiques : Nature → Montagnes → Dolomites. Write Place Names écrit la ville et le pays dans les fichiers qui ont une position mais aucun lieu.
  8. Exportation — Des fichiers annexes XMP prêts pour Lightroom ou Capture One, avec notes, mots-clés et données GPS intacts.

Automatisation par l’API#

Construisez vos propres flux avec l’API REST.

Marquer selon l’exposition et la netteté#

Écrivez un script qui marque les images d’après ce qu’ont trouvé les analyses :

import { CullingClient } from './photosuite-sdk.mjs';

const client = new CullingClient();
const images = await client.images.list();

// Reject what the exposure pass calls underexposed
const dark = images.filter((image) => image.exposure === 'underexposed');

// Flag sharp images as picks (sharpness is null until a frame is scored)
const sharp = images.filter(
  (image) => image.exposure !== 'underexposed' && (image.sharpness ?? 0) > 500,
);

if (dark.length > 0) {
  await client.batch.apply({ indices: dark.map((i) => i.index), action: 'set_flag', value: 'reject' });
}
if (sharp.length > 0) {
  await client.batch.apply({ indices: sharp.map((i) => i.index), action: 'set_flag', value: 'pick' });
}

Webhooks#

Écoutez les événements et déclenchez des actions externes :

import { CullingClient } from './photosuite-sdk.mjs';

const client = new CullingClient();

client.on('rating_set', async (event) => {
  if (event.rating >= 4) {
    // Queue high-rated images for every upload destination
    await client.upload.queue([event.index]);
  }
});

client.on('import_started', async (event) => {
  // Tell the team on Slack that a card is coming in
  await fetch(process.env.SLACK_WEBHOOK!, {
    method: 'POST',
    body: JSON.stringify({ text: `Importing ${event.files} files from ${event.source}` }),
  });
});

Traitement par lot#

Traitez un dossier entier depuis la ligne de commande :

import { CullingClient } from './photosuite-sdk.mjs';

const client = new CullingClient();

// Open folder
await client.folder.open('/Photos/2026/event');

// Crop every image around the people in it
for (const image of await client.images.list()) {
  await client.navigate.to(image.index);
  await client.images.autoCrop();
}

// Filter to 3+ stars and send them to every upload destination
await client.filter.set({ min_rating: 3 });
const selects = await client.images.list();
await client.upload.queue(selects.map((image) => image.index));

L’API fait de FLOGVIT.photosuite une brique pour n’importe quel flux de travail que vous pouvez imaginer.

esc
    ↑↓ naviguer↵ ouvrir