Découvrir le paramètre « output_meta » dans Transloadit
Si vous avez déjà consulté la documentation des Robots
/upload/handle et /image/resize, vous avez
peut-être remarqué le paramètre output_meta. Vous vous êtes peut-être alors demandé à quoi
il sert exactement. Après tout, contrairement à la plupart des autres paramètres, son utilité ne
ressort pas forcément de son seul nom :)
Alors, pourquoi ne pas prendre un moment pour expliquer comment fonctionne ce paramètre, et pourquoi il a été créé !
Le paramètre output_meta
L’idée derrière le paramètre output_meta est de donner à nos clients la possibilité de
collecter certaines métadonnées sur leurs fichiers. Pratique à avoir activé en permanence, n’est-ce
pas ? Eh bien, leur calcul est aussi beaucoup plus gourmand en puissance CPU. Ainsi, pour que ces
Assemblies restent rapides en toutes circonstances, nous avons créé un paramètre
pour la collecte de certaines métadonnées et l’avons laissé désactivé par défaut.
Vous pouvez définir le paramètre output_meta sur les Steps qui
utilisent nos Robots afin de choisir si vous souhaitez des métadonnées
supplémentaires pour chaque résultat d’encodage. Si cela offre à nos utilisateurs le luxe d’un
contrôle fin et granulaire, cela a aussi posé un problème : comment l’activer pour les fichiers
téléversés ? Nous prenons en charge les téléversements de fichiers depuis 2008, mais ils ont
toujours fait un peu figure d’exception, car les fichiers téléversés étaient autrefois les seuls à ne
pas être le résultat de nos Robots.
Ainsi, après l’introduction d’un contrôle fin grâce au paramètre output_meta, l’étape
logique suivante consistait à encapsuler la gestion des téléversements dans un
Robot dédié et à lancer le Robot
/upload/handle en même temps que ce nouveau paramètre. Il n’y a
désormais plus d’exceptions, et le comportement peut être modifié à chaque
Step pour chaque fichier.

Comment cela fonctionne-t-il ?
Le paramètre output_meta permet de sélectionner des métadonnées facultatives à l’aide d’un
objet de propriétés booléennes, d’un tableau de noms de propriétés ou d’un booléen. Cet exemple
utilise has_transparency ; parmi les autres propriétés prises en charge figurent
dominant_colors et blurhash. Si has_transparency est défini sur true, notre système de
traitement analyse l’image et vous indique si elle comporte des parties transparentes.
Comme le calcul de has_transparency peut prendre beaucoup de temps pour certains fichiers, nous
l’excluons par défaut de l’ensemble des résultats. Après tout, nous ne voulons pas que nos clients
paient le prix fort en temps d’exécution s’ils ne s’intéressent même pas à cette propriété.
Si vous souhaitez savoir, par exemple, si vos fichiers téléversés comportent des zones transparentes,
vous pouvez définir "output_meta": { "has_transparency": true } sur le Robot
/upload/handle, après quoi vous trouverez meta.has_transparency défini
sur les fichiers résultants.
Voyons comment construire une Assembly qui utilise ce paramètre. N’hésitez pas à suivre en même temps !
Créer l’Assembly
Dans cette section, nous allons créer deux jeux distincts d’Assembly Instructions, qui nous montreront comment le paramètre est utilisé à la fois dans le Robot /upload/handle et dans le Robot /image/resize.
{
"steps": {
":original": {
"robot": "/upload/handle",
"output_meta": {
"has_transparency": true
}
}
}
}
{
"steps": {
":original": {
"robot": "/upload/handle"
},
"resized": {
"use": [":original"],
"robot": "/image/resize",
"result": true,
"background": "white",
"flatten": false,
"height": 500,
"imagemagick_stack": "v2.0.3",
"resize_strategy": "pad",
"rotation": false,
"strip": true,
"trim_whitespace": true,
"width": 250,
"output_meta": {
"has_transparency": true
}
}
}
}
Nous avons ici deux jeux différents d’Assembly Instructions : l’un utilise uniquement le Robot /upload/handle, l’autre le Robot /image/resize.
Notez que dans les Assembly Instructions qui font appel au
Robot /image/resize, la propriété
output_meta n’apparaît pas dans le Step :original, mais dans le Step resized. En effet,
dans ces Assembly Instructions, nous testons la transparence lors
du redimensionnement du fichier, et non lors de son téléversement.
Les résultats
Après l’exécution de l’un ou l’autre des jeux d’Assembly Instructions
ci-dessus, le résultat JSON du Robot
/upload/handle montre que la propriété meta de la clé uploads
contient un champ nommé has_transparency, défini sur true. Cette propriété ne renvoie
true que si l’image comporte des parties transparentes.
De même, dans le résultat JSON renvoyé pour le Robot
/image/resize, la propriété meta de la clé resized de la
section results contient un champ nommé has_transparency, défini sur true.
Comme vous pouvez le constater, le paramètre output_meta peut s’avérer très pratique ! Nous
envisageons également de vous permettre de désactiver d’autres clés de métadonnées existantes afin
d’accélérer les Assemblies. Par exemple, nous calculons actuellement par
défaut les empreintes MD5 de tous les fichiers, alors que de nombreux cas d’usage n’en ont peut-être
pas besoin. Dès que d’autres propriétés pourront être spécifiées avec ce paramètre, nous ne
manquerons pas de vous en informer ! 💖
