Aller au contenu principal

E-commerce : photos produit

Mis à jour le 29 juillet 2026

E-commerce : photos produit

La génération d’images par IA transforme la production de visuels e-commerce. Un shooting photo classique mobilise un studio, un photographe, un retoucheur et plusieurs semaines de calendrier, pour un budget qui se compte en milliers d’euros ; GPT Image produit un visuel produit professionnel en quelques secondes. Cette leçon vous montre comment obtenir des images réellement exploitables commercialement, c’est-à-dire conformes aux attentes visuelles d’une fiche produit, et non de simples illustrations décoratives.

Photo produit sur fond blanc

Le fond blanc est le standard e-commerce par excellence : c’est ce qu’imposent les places de marché et ce qu’attendent les acheteurs quand ils comparent deux articles côte à côte. La difficulté n’est pas de dire « fond blanc », mais de décrire la mise en lumière qui rend le produit lisible. Le prompt de la fonction ci-dessous empile cinq précisions qui font toute la différence : le fond blanc pur, l’éclairage softbox de studio, l’ombre douce qui évite l’effet de découpage grossier, l’angle 3/4 légèrement plongeant qui donne du volume, et la mention du registre « Amazon / e-commerce premium » qui cadre le résultat.

from openai import OpenAI
import base64

client = OpenAI()

def photo_produit_fond_blanc(description_produit: str, output: str):
    """Génère une photo produit sur fond blanc, style e-commerce."""
    prompt = (
        f"{description_produit}, "
        "photographie produit professionnelle sur fond blanc pur, "
        "éclairage studio softbox, ombre douce, "
        "angle légèrement plongeant 3/4, "
        "netteté maximale, haute résolution, "
        "style Amazon / e-commerce premium"
    )

    response = client.images.generate(
        model="gpt-image-1",
        prompt=prompt,
        size="1024x1024",
        quality="high",
        response_format="b64_json"
    )

    data = base64.b64decode(response.data[0].b64_json)
    with open(output, "wb") as f:
        f.write(data)
    print(f"Photo produit : {output}")


photo_produit_fond_blanc(
    "Casque audio sans fil noir mat, design premium, coussinets cuir",
    "casque_fond_blanc.png"
)

Photos de mise en situation

La photo sur fond blanc informe, la photo lifestyle fait désirer. Elle montre le produit dans son contexte d’utilisation et laisse l’acheteur se projeter : une gourde isotherme posée sur un rocher face à un panorama de montagne ne vend pas de l’acier brossé, elle vend une randonnée. Le vocabulaire du prompt change donc complètement de registre — lumière naturelle plutôt que studio, bokeh léger plutôt que netteté maximale, composition décentrée selon la règle des tiers plutôt que sujet centré — et le format bascule en paysage, puisque ces visuels servent de bannières de fiche produit ou de contenus sociaux.

from openai import OpenAI
import base64

client = OpenAI()

def photo_lifestyle(produit: str, contexte: str, output: str):
    """Génère une photo lifestyle d'un produit en situation."""
    prompt = (
        f"{produit} utilisé dans un contexte de {contexte}, "
        "photographie lifestyle éditoriale, lumière naturelle, "
        "profondeur de champ avec bokeh léger, "
        "composition décentrée règle des tiers, "
        "ambiance aspirationnelle, style magazine"
    )

    response = client.images.generate(
        model="gpt-image-1",
        prompt=prompt,
        size="1536x1024",
        quality="high",
        response_format="b64_json"
    )

    data = base64.b64decode(response.data[0].b64_json)
    with open(output, "wb") as f:
        f.write(data)
    print(f"Photo lifestyle : {output}")


photo_lifestyle(
    "Gourde isotherme en acier brossé",
    "randonnée en montagne, posée sur un rocher avec vue panoramique",
    "gourde_lifestyle.png"
)

photo_lifestyle(
    "Sac à dos en toile cirée marron",
    "café branché, posé sur une chaise en bois à côté d'un laptop",
    "sac_lifestyle.png"
)

Déclinaisons couleur d’un même produit

Un modèle de sneakers décliné en cinq coloris demande cinq visuels rigoureusement identiques, à la couleur près : même angle, même ombre, même cadrage. C’est exactement ce que fait la boucle suivante, en gardant un bloc de directives photographiques strictement constant et en ne laissant varier que le nom de la couleur. Ce qui vous coûterait une demi-journée de studio et de retouche se règle ici en une exécution de script.

from openai import OpenAI
import base64

client = OpenAI()

produit_base = "Sneakers montantes en cuir"
couleurs = [
    ("blanc", "white_sneakers.png"),
    ("noir", "black_sneakers.png"),
    ("rouge bordeaux", "bordeaux_sneakers.png"),
    ("bleu marine", "navy_sneakers.png"),
    ("vert olive", "olive_sneakers.png"),
]

for couleur, filename in couleurs:
    prompt = (
        f"{produit_base} couleur {couleur}, "
        "photographie produit sur fond blanc, éclairage studio, "
        "vue 3/4 face, ombre portée douce, "
        "style site e-commerce premium, netteté maximale"
    )

    response = client.images.generate(
        model="gpt-image-1",
        prompt=prompt,
        size="1024x1024",
        quality="high",
        response_format="b64_json"
    )

    data = base64.b64decode(response.data[0].b64_json)
    with open(filename, "wb") as f:
        f.write(data)
    print(f"Couleur {couleur}{filename}")

Pack de vues multiples

Une fiche produit sérieuse ne se contente jamais d’un seul cliché : l’acheteur veut voir l’objet de face, de profil, de dessus et en trois quarts avant de sortir sa carte. La fonction pack_vues_produit industrialise cette exigence en parcourant quatre descriptions d’angle et en suffixant chaque fichier de manière prévisible, ce qui permet ensuite à votre back-office de les rattacher automatiquement à la bonne référence.

from openai import OpenAI
import base64

client = OpenAI()

def pack_vues_produit(description: str, prefix: str):
    """Génère un pack de 4 vues d'un produit."""
    vues = [
        ("vue de face, centré", "face"),
        ("vue de profil gauche, angle 90 degrés", "profil"),
        ("vue de dessus, à plat (flat lay)", "dessus"),
        ("vue 3/4, angle plongeant léger", "3-4"),
    ]

    for prompt_vue, suffix in vues:
        prompt = (
            f"{description}, {prompt_vue}, "
            "fond blanc pur, éclairage studio professionnel, "
            "netteté maximale, style e-commerce"
        )

        response = client.images.generate(
            model="gpt-image-1",
            prompt=prompt,
            size="1024x1024",
            quality="high",
            response_format="b64_json"
        )

        path = f"{prefix}_{suffix}.png"
        data = base64.b64decode(response.data[0].b64_json)
        with open(path, "wb") as f:
            f.write(data)
        print(f"Vue {suffix}{path}")


pack_vues_produit(
    "Montre connectée avec bracelet en silicone noir, cadran rond, écran OLED",
    "montre"
)

Modifier l’arrière-plan d’une photo existante

Vous disposez déjà d’une photo sur fond blanc et vous voulez la version lifestyle sans refaire le produit ? images.edit() vous le permet, à condition de raisonner à l’envers : le masque protège le produit et libère tout le reste. La fonction dessine donc une ellipse opaque au centre — la zone préservée — et laisse transparente la périphérie que le modèle va repeindre. L’appel précise dans le prompt que le produit central reste intact, ce qui renforce le comportement attendu.

from openai import OpenAI
from PIL import Image, ImageDraw

client = OpenAI()

def changer_fond_produit(image_path: str, nouveau_fond: str, output: str):
    """
    Remplace l'arrière-plan d'une photo produit.
    Suppose que le produit est centré dans l'image.
    """
    source = Image.open(image_path)
    w, h = source.size
    mask = Image.new("RGBA", (w, h), (0, 0, 0, 0))
    draw = ImageDraw.Draw(mask)

    # Zone opaque au centre = protégée
    margin_x, margin_y = w // 5, h // 5
    draw.ellipse(
        [margin_x, margin_y, w - margin_x, h - margin_y],
        fill=(0, 0, 0, 255)
    )
    mask.save("temp_mask_fond.png")

    response = client.images.edit(
        model="gpt-image-1",
        image=open(image_path, "rb"),
        mask=open("temp_mask_fond.png", "rb"),
        prompt=f"Arrière-plan : {nouveau_fond}, le produit au centre reste intact"
    )

    import urllib.request
    urllib.request.urlretrieve(response.data[0].url, output)
    print(f"Fond modifié : {output}")


changer_fond_produit(
    "casque_fond_blanc.png",
    "bureau design minimaliste en bois clair, plante verte floue en arrière-plan",
    "casque_lifestyle_auto.png"
)

Ce que la génération ne garantit pas

Quatre réserves méritent d’être posées avant de brancher tout cela sur un catalogue en production. La première tient à la cohérence : GPT Image ne garantit pas que le même produit sera identique d’une génération à l’autre, et une déclinaison couleur lancée trois jours plus tard peut revenir avec une semelle légèrement différente. La parade consiste à générer toutes les variantes d’une même référence dans la même session, comme le fait la boucle des coloris.

La deuxième concerne le texte porté par le produit lui-même. Les logos et les mentions imprimées sont bien rendus, mais rien ne vous dispense d’une relecture orthographique : une capsule de crème dont le nom de marque perd une lettre passe très bien l’œil du script et très mal celui du client. La troisième réserve porte sur les dimensions réelles, que le modèle ignore ; si les proportions comptent — un flacon de 50 ml qui ne doit pas ressembler à un pot d’un litre — précisez-les explicitement dans le prompt. La quatrième est de méthode : l’IA accélère la production, elle ne remplace pas la validation humaine, et aucun visuel ne devrait rejoindre une fiche produit sans avoir été regardé par quelqu’un.

Pour éprouver l’ensemble de la chaîne, choisissez un produit réel ou fictif et écrivez un script qui génère son pack e-commerce complet : une photo sur fond blanc, deux photos lifestyle dans des contextes différents, et trois déclinaisons de coloris. Vous mesurerez alors ce que représente concrètement un catalogue de cent références.