Se rendre au contenu

Champ Image dans Odoo : Guide Complet pour Gérer les Images

Guide pratique du champ Image dans le modèle de données Odoo : tout ce qu’il faut savoir, de l’utilisation courante aux réglages avancés et bonnes pratiques
6 mars 2026 par
Champ Image dans Odoo : Guide Complet pour Gérer les Images
Dasolo
| Aucun commentaire pour l'instant

Introduction


Si vous avez déjà ajouté la photo d’un produit, mis le logo d’entreprise ou collé la photo d’un collègue sur sa fiche, vous avez utilisé un champ Image dans Odoo. C’est le champ le plus visible pour tout utilisateur : il transforme des lignes de données en repères visuels faciles à reconnaître.


Pour l’utilisateur final, l’expérience est simple : on clique, on charge l’image et celle-ci apparaît. Mais côté configuration et développement, le champ Image implique un traitement spécifique : stockage, variations de tailles, règles d’accès — des éléments à connaître avant d’ajouter des champs visuels sur des modèles personnalisés.


Ce guide explique ce que stocke le champ Image, son comportement dans Odoo, comment l’ajouter via Odoo Studio ou en Python, et illustre le tout par des exemples concrets issus de processus métier réels.

Qu’est-ce que le champ Image dans Odoo


Dans l’ORM d’Odoo, il existe un type dédié pour les images, déclaré comme fields.Image depuis Odoo 13. Avant, on utilisait fields.Binary avec un widget image. Le type Image moderne prend en charge le cycle complet : validation, redimensionnement et affichage sans bricolage supplémentaire.


En pratique, une image est enregistrée sous forme binaire encodée en base64. Plutôt que d’alourdir les tables principales, Odoo utilise majoritairement des pièces jointes (ir.attachment) pour conserver ces fichiers, ce qui facilite la diffusion des images via des URLs optimisées.


Affichage dans l’interface

Sur un formulaire, le champ Image s’affiche comme une vignette cliquable : on peut importer depuis le disque et parfois coller une URL. La prévisualisation intégrée facilite la vérification visuelle sans ouvrir l’image ailleurs.


Dans les vues en liste, les vignettes sont rarement utilisées parce qu’elles ralentissent le chargement. En revanche, les vues kanban tirent grand profit d’aperçus visuels pour repérer rapidement produits, contacts ou tâches sur des cartes compactes.


Image vs Binary dans Odoo

Il faut distinguer Binary et Image : Binary accepte tout type de fichier (PDF, XLSX, ZIP), alors que Image est taillé pour les fichiers graphiques. Image applique des validations spécifiques et redimensionne automatiquement ; pour des documents, préférez Binary.

Comment fonctionne ce champ


Lorsque l’utilisateur charge une image, Odoo ne se contente pas d’enregistrer le fichier brut : il le traite d’abord.


Redimensionnement automatique

Le champ fields.Image accepte des paramètres max_width et max_height. Si l’image dépasse ces valeurs, Odoo la redimensionne en préservant le ratio, automatiquement lors de l’enregistrement, sans intervention utilisateur.

Par défaut, la taille maximale courante est 1920 pixels sur le côté le plus long, d’où les noms habituels comme image_1920 sur les modèles produits ou partenaires.


Variantes de tailles d’images

Sur les modèles livrés avec Odoo, on retrouve souvent une série de champs liés : image_1920, image_1024, image_512, image_256, image_128 — chacun étant un fields.Image lié au principal et configuré avec une limite différente.


Cette organisation permet de servir la taille d’image adaptée au contexte : une liste affiche un petit thumbnail pour préserver la rapidité, le détail produit affiche l’image pleine résolution. Selon l’usage attendu, un modèle personnalisé n’aura peut‑être pas besoin de toutes ces variantes.


Stockage via les attachments

Par défaut, les images sont stockées comme pièces jointes (ir.attachment) : la table du modèle contient la référence, tandis que le contenu binaire se trouve dans l’objet attachment.


Cela allège les tables principales et permet d’accéder aux images via des URLs structurées du type /web/image/model/id/field, utilisées par le site web, les e-mails et l’API.


Contrôles d’accès

Les règles d’accès s’appliquent aux images comme au reste de l’enregistrement : si un utilisateur n’a pas le droit de lire un produit, il ne pourra pas non plus récupérer son image. Odoo gère cela automatiquement — point important pour les portails ou pages publiques.

Cas d’usage en entreprise


Le champ Image est omniprésent dans Odoo. Voici les usages les plus fréquents en entreprise.


1. Catalogue produit (Ventes & Stock)

Les images produits sont probablement l’usage le plus visible : chaque template produit contient un image_1920 qui s’affiche sur la boutique en ligne, les PDF de commande, les écrans de point de vente et dans les applications mobiles de préparation de colis.

Pour des catalogues volumineux, les entreprises préfèrent souvent un import automatisé via API plutôt que l’ajout manuel. Le champ accepte des données binaires en base64, ce qui facilite le chargement par XML‑RPC ou JSON‑RPC.


2. Logos clients et fournisseurs (CRM et Achats)

Le modèle res.partner comporte un champ Image pour photos et logos. Ces visuels apparaissent sur la fiche partenaire, dans la zone de discussion et en vue kanban, aidant les commerciaux à repérer rapidement des comptes importants.


3. Photos des employés (RH)

La fiche hr.employee stocke la photo du collaborateur. Elle s’affiche dans l’annuaire, parfois sur les bulletins de salaire et à côté des messages dans le module Discuss. Les équipes RH importent souvent ces images en masse lors des intégrations.


4. Photos d’équipement et d’actifs (Maintenance)

En maintenance, attacher une photo à un équipement permet au technicien de vérifier visuellement l’objet avant intervention — utile lorsqu’on traite plusieurs machines similaires sur site.


5. Formulaires d’inspection ou contrôle qualité

Les entreprises créent souvent des modèles personnalisés pour inspections, contrôles qualité ou confirmations de livraison. Ajouter un champ Image permet de joindre une preuve visuelle directement sur l’enregistrement, pratique pour les équipes mobiles.

Créer ou personnaliser le champ


Deux approches principales existent pour ajouter un champ Image : via Odoo Studio sans code, ou via Python pour un contrôle fin.


Via Odoo Studio

Odoo Studio est l’outil no‑code intégré. Pour ajouter une image, ouvrez l’application concernée, activez Studio et éditez la vue de formulaire où vous souhaitez insérer le champ.


Glissez un champ Image depuis le panneau : Studio crée le champ au niveau du modèle et vous invite à lui donner un libellé — c’est la méthode recommandée pour les consultants fonctionnels et les utilisateurs métiers.

Les champs créés par Studio portent généralement le préfixe x_studio_ (par ex. x_studio_site_photo) et se comportent comme les champs Image natifs pour le stockage et l’affichage.


Via Python (développement Odoo)

Pour des personnalisations techniques, on déclare le champ Image dans un fichier modèle Python. Cela offre plus de flexibilité et permet de définir des champs dérivés ou stockés selon les besoins.


Exemple de déclaration courante en Python :

On paramètre max_width et max_height pour fixer la taille maximale (par ex. 1920 px) et on peut ajouter un champ lié plus petit (photo_128) pour servir de vignette dans les vues compactes — c’est le schéma standard en développement Odoo.


Ajout du champ dans une vue

Après avoir ajouté le champ au modèle, il faut l’inclure dans la vue pour qu’il soit visible. En XML de formulaire, on déclare le champ avec l’attribut widget="image" pour qu’il s’affiche correctement.

Exemple d’élément XML :

La classe oe_avatar place l’image en cercle dans le coin supérieur gauche du formulaire, style par défaut d’Odoo ; vous pouvez aussi l’intégrer sans cette classe pour un rendu inline.

Bonnes pratiques


Recommandations pratiques


Fixer des limites de taille réalistes

La limite par défaut de 1920 px convient dans la plupart des cas. N’augmentez la taille que pour de bonnes raisons (impression haute résolution, par ex.), car des images plus grandes gonflent les pièces jointes et ralentissent le chargement des pages.


Créer une vignette pour listes et kanban

Si vous affichez des images dans des listes ou kanban, prévoyez une variante réduite (128 ou 256 px). Récupérer une miniature est beaucoup plus rapide que charger l’image pleine taille pour chaque carte affichée.


Utiliser l’API pour les imports massifs

Pour charger des centaines ou milliers d’images, évitez le travail manuel. Utilisez XML‑RPC ou JSON‑RPC en envoyant des données en base64 : c’est automatisable et nettement plus rapide qu’un chargement via l’interface.


Compresser les images avant téléversement

Même après redimensionnement, Odoo n’applique pas toujours une compression forte. Un JPEG de 5 Mo réduit à 1920 px peut rester volumineux. Compresser en amont permet de contrôler la taille des pièces jointes pour de gros catalogues.


Éviter les images dans des vues list très sollicitées

Afficher un champ Image dans une colonne de liste force la récupération du binaire pour chaque ligne visible et peut ralentir considérablement la vue. Préférez une petite miniature ou limitez l’affichage aux formulaires.


Pièges fréquents


Pièges courants rencontrés


Confondre Binary et Image

Un champ Binary sans widget image s’affiche comme bouton de téléchargement, pas comme aperçu. Pour voir l’image directement, utilisez fields.Image ou ajoutez widget="image" sur un fields.Binary — erreur fréquente surtout sur les versions antérieures d’Odoo.


Ne pas prévoir les variantes de taille dès le départ

Ajouter ensuite des champs liés pour miniatures peut nécessiter une migration si le module est déjà en production. Penser aux besoins d’affichage dès la conception évite des refontes coûteuses.


Stocker les images directement dans la table au lieu d’attachements

Sur de très vieilles installations ou des configurations inaptes, les binaires peuvent être stockés dans la colonne du modèle, grossissant les tables principales et ralentissant les requêtes. Assurez‑vous que votre instance utilise le stockage d’attachements (ou S3) quand c’est pertinent.


Utiliser Image pour stocker des documents

Certains tentent d’utiliser les champs Image pour des documents scannés ou multi‑pages. Ce n’est pas approprié : pour la gestion documentaire, utilisez le module Documents ou un fields.Binary avec téléchargement — Image est pensé pour photos et logos.


Oublier les règles d’accès sur des pages publiques

Si une image est intégrée à une page publique mais que l’enregistrement n’est pas accessible publiquement, l’URL renverra une erreur 404. Vérifiez toujours les droits lors de la création de pages web ou de portails clients.

Conclusion


En résumé, le champ Image est simple d’utilisation en apparence, mais contient des subtilités qui peuvent poser problème sans préparation : redimensionnement, stockage en pièces jointes et stratégie multi‑tailles sont des notions à maîtriser.


Côté utilisateurs métiers, savoir que les images sont liées et sécurisées facilite la mise en place de pages web ou de portails. Pour les développeurs, adopter le couple fields.Image + champs miniatures liés est la bonne pratique à intégrer tôt dans vos projets Odoo.


Que vous ajoutiez une photo produit, une photo d’inspection terrain ou que vous affichiez des logos clients dans un portail, le champ Image apporte une gestion native et cohérente des visuels au sein du modèle de données Odoo.

Besoin d’aide pour votre mise en place Odoo ?


Chez Dasolo, nous accompagnons les entreprises dans l’implémentation, la personnalisation et l’optimisation d’Odoo sur tous les modules et versions. Qu’il s’agisse de configurer des champs standards, développer des modules sur mesure ou migrer des données depuis un système ancien, nous travaillons avec vos équipes pour que la solution reflète vos processus réels.

Si vous avez des questions sur votre configuration Odoo ou si vous souhaitez explorer les possibilités offertes par la plateforme, contactez‑nous— nous serons ravis de vous accompagner.

Champ Image dans Odoo : Guide Complet pour Gérer les Images
Dasolo 6 mars 2026
Partager cet article
Se connecter pour laisser un commentaire.