Optimiser des images sans perte de qualité
🤖/image/optimize réduit la taille des images tout en conservant la même qualité visuelle.

Avec ce Robot, il est possible d’obtenir une réduction de la taille des fichiers de vos images JPEG, PNG, GIF, WEBP et SVG allant jusqu’à 80 % pour les grandes images et 65 % pour celles de petite ou moyenne taille — tout en conservant leur qualité d’origine !
Ce Robot vous permet de réduire vos coûts de stockage et de bande passante, et améliore votre expérience utilisateur et votre monétisation en réduisant le temps de chargement des pages web riches en images.
Il fonctionne bien avec 🤖/image/resize pour faire bénéficier votre site web ou votre application de toute la puissance des images redimensionnées et optimisées.
Ce Robot accepte tous les types d’images et transmet simplement les images de types non pris en charge sans les optimiser, y compris les images JPEG XL (.jxl) lorsqu’aucun résultat optimisé plus petit ne peut être produit. Il n’est donc pas nécessaire de configurer des flux de travail 🤖/file/filter pour cela.
L’optimisation PNG utilise uniquement des compresseurs sans perte (optipng) par défaut. Pour activer également la compression avec perte (pngquant), définissez lossy: true. Lorsqu’elle est activée, les compresseurs avec et sans perte sont mis en concurrence et le résultat le plus petit est retenu, ce qui peut entraîner des variations de couleur dans certaines images.
Exemple d’utilisation
Optimiser les images téléversées :
{
"steps": {
"optimized": {
"robot": "/image/optimize",
"use": ":original"
}
}
}Paramètres
interpolateboolean | Record<string, boolean>Détermine si les Assembly Variables sont interpolées pour chaque champ d’instruction.
Par défaut, la plupart des champs d’instruction des Robots interpolent les Assembly Variables. Définissez ce paramètre sur
falsepour traiter tous les champs d’instruction comme du texte littéral, ou définissez le chemin d’un champ individuel surfalsepour traiter uniquement ce champ comme du texte littéral. Pour les champs propres à un Robot qui sont littéraux par défaut, définissez ce paramètre surtrueou définissez le chemin de ce champ surtruepour réactiver l’interpolation.Utilisez des noms de champs tels que
path, ou des chemins avec points tels queffmpeg.vfpour les objets imbriqués.output_metaRecord<string, boolean> | boolean | Array<string>Permet de spécifier un ensemble de métadonnées dont le calcul est plus coûteux en puissance CPU et qui sont donc désactivées par défaut afin que le traitement de vos Assemblies reste rapide.
Pour les images, vous pouvez ajouter
"has_transparency": truedans cet objet pour déterminer si l’image contient des parties transparentes, et"dominant_colors": truepour extraire de l’image un tableau de codes couleur hexadécimaux.Pour les images, vous pouvez également ajouter
"blurhash": truepour extraire une chaîne BlurHash — une représentation compacte d’un espace réservé pour l’image, utile pour afficher un aperçu flou pendant le chargement de l’image complète.Pour les images,
"thumbhash": trueextrait plutôt un ThumbHash encodé en base64 dansmeta.thumbhash, accompagné demeta.has_alpha(qui indique si un canal alpha existe, même lorsque l’image est entièrement opaque). Il décrit les pixels orientés selon les données EXIF et utilise la première image des images animées. L’extraction est effectuée au mieux : les images de plus de 40 mégapixels, les formats non pris en charge ou un décodage échoué ou limité ne produisent aucun espace réservé. Une extraction réussie ajoute des frais de métadonnées équivalents à 20 % des octets de ce fichier. Aucun supplément ThumbHash ne s’applique lorsque l’option est désactivée ou lorsqu’aucun hash n’est produit.Définissez cette option sur le Step qui produit l’image, par exemple
/upload/handlepour les originaux téléversés ou/image/resizepour les sorties traitées. La définir uniquement sur/transloadit/storene déclenche pas l’extraction : le stockage conserve les métadonnées du Step producteur. Transloadit Storage conserve un hash généré avec sa version immuable et le renvoie dans les résultats stockés et lors des lectures natives de ressources. Les téléversements directs vers S3 ne génèrent pas d’espaces réservés. Un espace réservé contient des informations sur l’image : protégez-le donc avec les mêmes contrôles d’accès que l’image complète.Pour les vidéos, vous pouvez ajouter le paramètre
"colorspace": truepour extraire l’espace colorimétrique de la vidéo de sortie.Pour les vidéos, vous pouvez également ajouter
"interlaced": truepour détecter si la vidéo est entrelacée. Cette option combine l’indicateur ffprobe peu coûteuxfield_orderavec une passe d’échantillonnageidetlimitée sur les premières images de la source, et exposeinterlaced,field_orderainsi qu’un objet de diagnosticinterlace_detectionsousfile.meta. Cette opération est coûteuse en calcul et facturée en conséquence.Pour l’audio, vous pouvez ajouter
"mean_volume": truepour obtenir une valeur unique représentant le volume moyen du fichier audio.Vous pouvez également définir cette option sur
falsepour ignorer l’extraction des métadonnées et accélérer le transcodage.user_metaRecord<string, any>(par défaut :{})Ajoute des métadonnées JSON personnalisées à chaque fichier émis sans modifier son contenu. Les objets et tableaux imbriqués sont pris en charge.
L’héritage dépend du Robot. Les valeurs sont fusionnées avec la valeur
user_metaexistante du fichier de sortie ; le Step actuel remplace les clés de premier niveau correspondantes. Attribuez explicitement les clés requises lorsqu’un Robot crée de nouvelles sorties.Dans les Steps de traitement,
${file.*}désigne la première entrée et${result.*}le fichier émis. Les valeurs sont évaluées pour chaque sortie après l’exécution du Robot, avant l’extraction ultérieure des métadonnées et le stockage temporaire. Sur:original, les valeurs sont évaluées pour chaque téléversement avant l’extraction des métadonnées.Les Steps en aval lisent
${file.user_meta.key}. Consultez Métadonnées personnalisées pour un exemple complet et les règles d’héritage.resultboolean(par défaut :false)Indique si les résultats de ce Step doivent figurer dans l’Assembly Status JSON
queuebatchDéfinir la file d’attente sur « batch » abaisse manuellement la priorité des Jobs de ce Step afin d’éviter de consommer des emplacements prioritaires de Jobs pour des Jobs qui n’ont pas besoin d’un temps d’attente nul dans la file
force_acceptboolean(par défaut :false)Forcer un Robot à accepter un type de fichier qu’il aurait ignoré.
Par défaut, les Robots ignorent les fichiers qu’ils ne connaissent pas. Le Robot 🤖/video/encode, par exemple, ignorera volontiers les images en entrée.
Avec le paramètre
force_acceptdéfini surtrue, vous pouvez forcer les Robots à accepter tous les fichiers qui leur sont envoyés. Cela entraîne généralement des erreurs et ne doit être utilisé que pour le débogage ou pour traiter des cas limites.ignore_errorsboolean | Array<meta | execute>(par défaut :[])Ignore les erreurs pendant certaines phases du traitement.
Si vous définissez cette valeur sur
["meta"], le Robot ignorera les erreurs lors de l’extraction des métadonnées.Si vous définissez cette valeur sur
["execute"], le Robot ignorera les erreurs lors de la phase d’exécution principale.Définir cette valeur sur
trueéquivaut à["meta", "execute"]: les erreurs seront alors ignorées dans les deux phases.usestring | Array<string> | Array<object> | objectIndique quel(s) Step(s) utiliser comme entrée.
- Vous pouvez choisir n’importe quel nom pour les Steps, sauf
":original"(réservé aux téléversements des utilisateurs gérés par Transloadit) - Vous pouvez fournir plusieurs Steps en entrée à l’aide de tableaux :
{ "use": [ ":original", "encoded", "resized" ] } - Vous pouvez également étiqueter les Steps d’entrée avec
aspour transmettre une intention sémantique aux Robots :{ "use": [ { "name": ":original", "as": "image" }, { "name": ":original", "as": "mask" } ] }
AstuceC’est probablement tout ce que vous devez savoir sur
use, mais vous pouvez consulter les cas d’utilisation avancés.- Vous pouvez choisir n’importe quel nom pour les Steps, sauf
prioritycompression-ratio | conversion-speed(par défaut :"compression-ratio")Propose différents algorithmes offrant une compression plus ou moins efficace de vos images, mais s’exécutant plus ou moins lentement. La valeur
"conversion-speed"produit un taux de compression moyen de 18 %. La valeur"compression-ratio"produit un taux de compression moyen de 31 %.progressiveboolean(par défaut :false)Entrelace l’image si ce paramètre est défini sur
true, ce qui entraîne le chargement progressif de l’image résultante dans les navigateurs. Au lieu d’afficher l’image de haut en bas, le navigateur affiche d’abord une version floue en basse résolution, qui est ensuite rapidement remplacée par l’image réelle à mesure que les données arrivent. Cela améliore considérablement l’expérience utilisateur, mais diminue d’environ 10 % le gain sur la taille du fichier.preserve_meta_databoolean(par défaut :true)Spécifie si les métadonnées de l’image doivent être conservées ou non pendant l’optimisation. Si elles ne sont pas conservées, la taille du fichier est encore réduite. Sachez toutefois que cela peut supprimer les informations de droit d’auteur d’un photographe, ce qui, pour des raisons évidentes, peut être mal vu.
fix_breaking_imagesboolean(par défaut :true)S’il est défini sur
true, ce paramètre tente de corriger les images qui provoqueraient sinon une erreur de l’outil sous-jacent et feraient ainsi échouer vos Assemblies. Cela peut toutefois parfois augmenter la taille du fichier.lossyboolean(par défaut :false)Lorsque ce paramètre est défini sur
false(valeur par défaut), seuls les outils d’optimisation PNG sans perte sont utilisés, ce qui désactive pngquant afin de préserver la fidélité des couleurs.Lorsque ce paramètre est défini sur
true, les outils d’optimisation PNG avec et sans perte sont mis en concurrence et le résultat le plus petit est retenu. Cela autorise l’utilisation de pngquant, un compresseur avec perte qui réduit les PNG à une palette de 256 couleurs, ce qui peut entraîner des variations de couleur perceptibles dans les images aux palettes de couleurs riches, aux dégradés subtils ou aux couleurs propres à une marque.NoteCe paramètre agit uniquement sur l’optimisation PNG. Il n’a aucun effet sur l’optimisation JPEG, GIF, WebP et SVG.
Démonstrations
Articles de blog associés
- Enhancing web speed with lossless image optimization (English)
- Enhanced PNG optimization with Pngquant integration (English)
- Auto-optimize images for lower costs & bandwidth (English)
- New pricing model for future Transloadit customers (English)
- Efficient Dropbox to SFTP file transfer with optimization (English)
- How to reduce image file sizes without losing quality (English)
- Upscale and enhance low-res images in one Assembly (English)