
Lorsqu'ils utilisent l'IA pour éditer des images, une question préoccupe de nombreux développeurs : est-il possible de modifier uniquement une partie spécifique d'une image, sans affecter le reste ? C'est précisément le problème central que la technologie d'inpainting (retouche/édition locale) vise à résoudre.
La bonne nouvelle est que les modèles de la série Nano Banana supportent bien l'inpainting pour l'édition locale, et offrent même des capacités d'édition mask-free (sans masque) plus puissantes que les solutions traditionnelles. Cet article détaillera 3 méthodes pour réaliser une édition locale via l'API, vous aidant à choisir rapidement la voie technique la plus adaptée.
Valeur clé : Après avoir lu cet article, vous maîtriserez les 3 façons d'appeler l'API d'inpainting de Nano Banana, et serez capable d'implémenter des fonctionnalités d'édition locale par IA de niveau professionnel dans vos propres projets.
Panorama des capacités d'Inpainting de Nano Banana : 3 solutions pour l'édition locale
Une idée fausse courante chez de nombreux développeurs est de penser que Nano Banana ne peut que générer des images, sans supporter l'inpainting. En réalité, Nano Banana supporte non seulement l'inpainting, mais propose également plusieurs approches pour le réaliser.
| Solution | Modèle | Principe | Précision | Vitesse | Scénario d'utilisation |
|---|---|---|---|---|---|
| Solution 1 : Édition par langage naturel (Mask-Free) | Nano Banana 2 | Instruction textuelle + Image originale | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | Édition rapide, remplacement d'arrière-plan |
| Solution 2 : Modification précise (Mask-Based) | Nano Banana Pro Edit | Masque + Instruction textuelle + Image originale | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | Contrôle précis de la zone |
| Solution 3 : Édition itérative par dialogue multi-tours | Nano Banana 2 | Dialogue multi-tours + Contexte | ⭐⭐⭐⭐ | ⭐⭐⭐ | Édition complexe, optimisation progressive |
Différences clés entre l'Inpainting de Nano Banana et les solutions traditionnelles
Les outils d'inpainting traditionnels (comme Stable Diffusion Inpainting) nécessitent que le développeur dessine manuellement un masque (mask) en noir et blanc pour spécifier la zone à modifier. La percée fondamentale de Nano Banana réside dans :
- Piloté par la compréhension sémantique : Le modèle comprend des instructions en langage naturel comme "remplace l'arrière-plan par une plage" et identifie automatiquement la zone de l'arrière-plan.
- Conscient du contexte : Lors de la modification d'une zone locale, il s'adapte automatiquement à l'éclairage, la perspective et les couleurs de l'environnement environnant.
- Sans masque requis : La plupart des scénarios d'édition ne nécessitent pas la création manuelle d'un masque, réduisant ainsi le seuil d'entrée pour le développement.
🎯 Conseil technique : La capacité d'inpainting de Nano Banana est fournie via une interface standard compatible OpenAI. Nous recommandons de l'appeler via la plateforme APIYI apiyi.com, qui permet de gérer de manière unifiée les appels aux deux modèles Nano Banana 2 et Nano Banana Pro, facilitant ainsi les tests et les changements entre les différentes solutions.
Option 1 : Inpainting sans masque par langage naturel (recommandé pour débuter)
C'est l'une des fonctionnalités les plus puissantes de Nano Banana inpainting — vous pouvez modifier des parties d'une image en utilisant uniquement une description textuelle, sans avoir besoin d'un masque.
Principe fondamental du Mask-Free Inpainting de Nano Banana
Nano Banana 2 (basé sur Gemini 3.1 Flash Image) intègre une capacité de segmentation sémantique. Le modèle va :
- Analyser l'instruction d'édition — Comprendre quelle partie de l'image vous souhaitez modifier.
- Identifier automatiquement la zone — Localiser les pixels à modifier via la compréhension sémantique.
- Inférer le contexte — Analyser la direction de la lumière, les relations de perspective, les relations spatiales 3D.
- Remplacer avec précision — Modifier la zone cible tout en préservant la cohérence de l'environnement environnant.
Exemple de code minimaliste pour le Mask-Free Inpainting
import openai
import base64
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.apiyi.com/v1" # Interface unifiée APIYI
)
response = client.chat.completions.create(
model="gemini-2.5-flash-image-preview",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "Remove the person from this photo and fill the area with the surrounding background naturally"},
{"type": "image_url", "image_url": {"url": "https://example.com/your-photo.jpg"}}
]
}]
)
# Extraire l'image éditée
content = response.choices[0].message.content
print("Édition terminée, extraction des données de l'image...")
Modèles d'instructions d'édition courants pour Nano Banana Inpainting
| Type d'édition | Modèle d'instruction (anglais) | Explication en français |
|---|---|---|
| Supprimer un objet | Remove the [object] from the image and fill naturally |
Supprimer l'objet spécifié et remplir naturellement |
| Remplacer l'arrière-plan | Replace the background with [new scene] |
Remplacer la scène d'arrière-plan |
| Ajouter un élément | Add a [object] to the [position] of the image |
Ajouter un élément à une position spécifiée |
| Modifier un attribut | Change the [object]'s color from [A] to [B] |
Modifier la couleur d'un objet |
| Flouter l'arrière-plan | Blur the background while keeping the foreground sharp |
Flouter l'arrière-plan (bokeh) |
| Réparer un défaut | Remove the stain/scratch from the [area] |
Supprimer une tache ou une rayure |
| Ajuster une posture | Change the person's pose to [description] |
Ajuster la posture d'une personne |
| Changer de style | Convert the [area] to watercolor painting style |
Conversion de style localisée |

Voir le code complet pour le Mask-Free Inpainting (avec sauvegarde d’image et gestion des erreurs)
#!/usr/bin/env python3
"""
Exemple complet de Nano Banana Mask-Free Inpainting
Édition locale d'image via des instructions en langage naturel
"""
import openai
import base64
import re
from datetime import datetime
# Configuration
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.apiyi.com/v1"
client = openai.OpenAI(api_key=API_KEY, base_url=BASE_URL)
def inpaint_image(image_url: str, edit_instruction: str, output_path: str = None):
"""
Éditer une image en utilisant le Mask-Free Inpainting
Args:
image_url: URL de l'image originale ou data URI base64
edit_instruction: Instruction d'édition en anglais
output_path: Chemin du fichier de sortie (optionnel)
Returns:
bool: Indique si l'opération a réussi
"""
print(f"📝 Instruction d'édition : {edit_instruction}")
print(f"🖼️ Image originale : {image_url[:80]}...")
try:
response = client.chat.completions.create(
model="gemini-2.5-flash-image-preview",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": f"Generate an image: {edit_instruction}"},
{"type": "image_url", "image_url": {"url": image_url}}
]
}]
)
content = response.choices[0].message.content
# Extraire les données d'image base64
patterns = [
r'data:image/[^;]+;base64,([A-Za-z0-9+/=]+)',
r'([A-Za-z0-9+/=]{1000,})'
]
base64_data = None
for pattern in patterns:
match = re.search(pattern, content)
if match:
base64_data = match.group(1)
break
if not base64_data:
print(f"⚠️ Aucune donnée d'image trouvée, réponse du modèle : {content[:200]}")
return False
# Sauvegarder l'image
if not output_path:
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
output_path = f"inpainted_{timestamp}.png"
image_bytes = base64.b64decode(base64_data)
with open(output_path, 'wb') as f:
f.write(image_bytes)
print(f"✅ Édition terminée ! Sauvegardé sous : {output_path} ({len(image_bytes):,} octets)")
return True
except Exception as e:
print(f"❌ Échec de l'édition : {e}")
return False
# Exemple d'utilisation
if __name__ == "__main__":
# Exemple 1 : Supprimer un objet
inpaint_image(
image_url="https://example.com/photo-with-person.jpg",
edit_instruction="Remove the person on the right side and fill with natural background",
output_path="result_remove_person.png"
)
# Exemple 2 : Remplacer l'arrière-plan
inpaint_image(
image_url="https://example.com/portrait.jpg",
edit_instruction="Replace the background with a sunset beach scene, keep the person unchanged",
output_path="result_new_background.png"
)
# Exemple 3 : Modifier un attribut local
inpaint_image(
image_url="https://example.com/room.jpg",
edit_instruction="Change the wall color to light blue, keep furniture unchanged",
output_path="result_wall_color.png"
)
Option 2 : Inpainting basé sur un masque (Utilisation avancée)
Lorsque vous avez besoin d'un contrôle précis au niveau du pixel sur la zone à modifier, vous pouvez utiliser le mode masque de Nano Banana Pro Edit.
Fonctionnement de l'Inpainting basé sur un masque
Ce mode nécessite que vous fournissiez une image masque en noir et blanc. Les zones blanches indiquent les parties à modifier, et les zones noires restent inchangées.
| Paramètre | Description | Exigences |
|---|---|---|
| Image originale | L'image à éditer | PNG/JPEG, recommandé ≤ 4096×4096 |
| Image masque | Image en noir et blanc marquant la zone d'édition | Mêmes dimensions que l'originale, blanc = zone à éditer |
| Instruction d'édition | Décrit comment remplir la zone blanche | Les instructions en anglais donnent les meilleurs résultats |
Exemple de code pour l'Inpainting basé sur un masque
import openai
client = openai.OpenAI(
api_key="VOTRE_CLÉ_API",
base_url="https://api.apiyi.com/v1"
)
# Entrée multi-images : image originale + masque + instruction textuelle
response = client.chat.completions.create(
model="gemini-2.5-flash-image-preview",
messages=[{
"role": "user",
"content": [
{
"type": "text",
"text": "Generate an image: The first image is the original photo. The second image is a mask where white areas indicate regions to edit. Replace the masked area with a beautiful garden scene."
},
{"type": "image_url", "image_url": {"url": "https://example.com/original.jpg"}},
{"type": "image_url", "image_url": {"url": "https://example.com/mask.png"}}
]
}]
)
Quand choisir l'Inpainting basé sur un masque
- Besoin d'un contrôle précis des limites d'édition (ex. : modifier une chemise sans affecter la peau)
- La zone d'édition a une forme irrégulière, difficile à décrire précisément avec du langage naturel
- Traitement par lots de plusieurs images sur la même zone
- Scénarios professionnels exigeant des transitions de bordure de très haute qualité
💡 Astuce pratique : La façon la plus simple de créer un masque est d'utiliser l'outil pinceau dans Photoshop ou GIMP pour peindre en blanc les zones à modifier, puis d'exporter en PNG. Si la création manuelle d'un masque vous semble fastidieuse, sachez que le mode sans masque de l'option 1 est déjà très efficace dans la plupart des cas.
Option 3 : Inpainting par conversation multi-tours (Optimisation itérative)
Nano Banana 2 prend en charge les modifications multi-tours au sein d'une même session de conversation, chaque tour pouvant s'appuyer sur le résultat du précédent. Cette approche est particulièrement adaptée aux scénarios nécessitant des ajustements fins.
Flux de conversation pour l'Inpainting multi-tours
Tour 1 : "Remplacer l'arrière-plan par un bureau moderne" → Obtention de l'image éditée A
Tour 2 : Image A + "Remplacer la tasse sur le bureau par un ordinateur portable" → Obtention de l'image éditée B
Tour 3 : Image B + "Éclaircir la lumière globale, ajouter un effet de lumière traversant la fenêtre" → Obtention de l'image finale C
Implémentation du code pour l'Inpainting multi-tours
import openai
client = openai.OpenAI(
api_key="VOTRE_CLÉ_API",
base_url="https://api.apiyi.com/v1"
)
# Construction de la conversation multi-tours
messages = [
# Tour 1 : Édition initiale
{
"role": "user",
"content": [
{"type": "text", "text": "Replace the background with a modern office scene"},
{"type": "image_url", "image_url": {"url": "https://example.com/photo.jpg"}}
]
}
]
# Requête du Tour 1
response_1 = client.chat.completions.create(
model="gemini-2.5-flash-image-preview",
messages=messages
)
# Ajout du résultat du Tour 1 au contexte
messages.append({"role": "assistant", "content": response_1.choices[0].message.content})
# Tour 2 : Édition basée sur le tour précédent
messages.append({
"role": "user",
"content": [{"type": "text", "text": "Now add a laptop on the desk and make the lighting warmer"}]
})
response_2 = client.chat.completions.create(
model="gemini-2.5-flash-image-preview",
messages=messages
)

Comparaison des différentes versions du modèle Nano Banana Inpainting
Le choix du modèle Nano Banana dépend de vos besoins en matière d'inpainting :
| Dimension de comparaison | Nano Banana 2 | Nano Banana Pro | Explication |
|---|---|---|---|
| ID du modèle | gemini-3.1-flash-image-preview |
gemini-3.0-pro-image |
– |
| Édition sans masque (Mask-Free) | ✅ Pris en charge | ✅ Pris en charge | Les deux prennent en charge l'édition par langage naturel |
| Précision de l'édition | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | La compréhension sémantique du Pro est plus fine |
| Vitesse de génération | 3-8 secondes | 10-20 secondes | L'architecture Flash est 3 à 5 fois plus rapide |
| Résolution maximale | 4K (4096px) | 2K (2048px) | Banana 2 offre une résolution plus élevée |
| Édition multi-tours | ✅ Pris en charge | ✅ Pris en charge | Les deux prennent en charge les conversations multi-tours |
| Prix de l'API | ~0,02 $/appel | ~0,04 $/appel | Banana 2 coûte moitié moins cher |
| Scénario recommandé | Édition par lots, itération rapide | Retouche photo professionnelle, besoins de haute précision | Les deux peuvent être appelés simultanément via la plateforme APIYI apiyi.com |
Conseils pour le choix du modèle Nano Banana Inpainting
- Édition quotidienne, traitement par lots : Choisissez Nano Banana 2 — Rapide, économique, résolution 4K.
- Retouche photo professionnelle, contenu commercial : Choisissez Nano Banana Pro — Compréhension sémantique et restitution des couleurs les plus fines.
- Vous ne savez pas lequel choisir : Testez d'abord Nano Banana 2, puis passez au Pro si le résultat n'est pas satisfaisant.
Différence entre Nano Banana Inpainting et l'édition via l'interface web Gemini
De nombreux utilisateurs qui ont expérimenté la fonction d'édition d'images sur l'interface web Gemini (gemini.google.com) se demandent : Cette API peut-elle faire la même chose ?
La réponse est Oui, mais avec des différences :
| Dimension | Interface web Gemini | API Nano Banana |
|---|---|---|
| Mode d'interaction | Sélection à la souris + description textuelle | Appel API pur (texte + image) |
| Création du masque | Outil de pinceau intégré à l'interface web | Nécessite de préparer soi-même l'image masque ou d'utiliser le mode sans masque (mask-free) |
| Précision du contrôle | Sélection visuelle, intuitive | Contrôle au niveau du code, automatisable |
| Traitement par lots | Non pris en charge | ✅ Prise en charge des appels par lots |
| Filigrane | Filigrane SynthID présent | Filigrane SynthID présent |
| Capacité d'intégration | Utilisation uniquement via le web | Peut être intégré dans n'importe quelle application |
| Prix | Gratuit (avec limites) | Facturation à l'usage |
Différence clé : L'expérience d'édition d'images de l'interface web Gemini est plus interactive et visuelle, permettant aux utilisateurs de dessiner directement la zone de sélection à la souris. La version API, quant à elle, a pour avantage principal l'automatisation et la mise à l'échelle — vous pouvez traiter des images par lots dans votre code et l'intégrer dans votre flux de production.
🎯 Conseil technique : Si votre besoin est d'intégrer une fonction d'édition d'images par IA dans votre propre produit, l'API est la seule option. La plateforme APIYI apiyi.com offre un accès à l'interface plus stable et un support technique.
Meilleures pratiques pour le Inpainting Nano Banana
Techniques d'optimisation des instructions d'édition
De bonnes instructions d'édition peuvent améliorer considérablement les résultats du inpainting :
| Technique | Mauvaise instruction ❌ | Bonne instruction ✅ |
|---|---|---|
| Description spécifique | "Change le fond" | "Remplace le fond par une plage au coucher du soleil, avec une lumière dorée et chaude" |
| Spécifier les zones à conserver | "Change le fond" | "Remplace le fond en gardant la personne complètement inchangée" |
| Préciser l'éclairage | "Ajoute une lumière" | "Ajoute un éclairage doux et chaud provenant du coin supérieur gauche, projetant des ombres douces" |
| Décrire les matériaux | "Change le sol" | "Remplace le sol par un parquet en chêne clair avec un grain visible" |
| Limiter la portée | "Change la couleur" | "Change uniquement la couleur de la carrosserie de la voiture en bleu nuit, garde les vitres et les pneus inchangés" |
Suggestions d'optimisation des performances pour le Inpainting Nano Banana
- Prétraitement de l'image d'entrée — Recommandé entre 1024×1024 et 2048×2048. Une taille trop grande augmente le temps de traitement.
- Priorité aux instructions en anglais — La compréhension des instructions en anglais est nettement plus précise qu'en chinois.
- Se concentrer sur une seule modification à la fois — Divisez les modifications complexes en plusieurs étapes, en ne faisant qu'une seule chose par étape.
- Ajouter le préfixe "Generate an image:" — Indiquez clairement au modèle de générer une image plutôt qu'une réponse textuelle pure.
Questions fréquentes
Q1 : L’API Nano Banana prend-elle vraiment en charge le inpainting ? N’est-ce pas réservé à la version web ?
Oui, l'API Nano Banana prend entièrement en charge le inpainting (modification locale d'images). Nano Banana 2 (gemini-3.1-flash-image-preview) et Nano Banana Pro (gemini-3.0-pro-image) prennent tous deux en charge l'édition d'images via l'API. La fonctionnalité la plus puissante est le mask-free inpainting : vous n'avez pas besoin de créer de masque, il suffit de décrire votre besoin d'édition en langage naturel, et le modèle identifiera et modifiera automatiquement la zone cible. Vous pouvez rapidement obtenir une clé API et commencer à tester via la plateforme APIYI apiyi.com.
Q2 : Le Inpainting sans masque (Mask-Free) ou avec masque (Mask-Based) donne-t-il de meilleurs résultats ?
Cela dépend du scénario. Pour des besoins courants comme le remplacement de fond, la suppression d'objets ou la modification de couleurs, le mode sans masque est déjà suffisamment précis et beaucoup plus pratique. Pour des scénarios nécessitant une précision extrême des contours (par exemple, modifier uniquement le motif d'une chemise sans affecter la peau), le mode avec masque offre un contrôle plus précis. Il est recommandé de tester d'abord en mode sans masque, puis d'utiliser un masque si le résultat n'est pas satisfaisant. La plateforme APIYI apiyi.com prend en charge les deux modes d'appel, et la bascule est très facile.
Q3 : Le inpainting de Nano Banana peut-il atteindre le niveau de Photoshop ?
Dans de nombreux scénarios, il est déjà très proche, voire supérieur, à la fonction Remplissage basé sur le contenu (Content-Aware Fill) de Photoshop. L'avantage de Nano Banana est sa compréhension sémantique de la scène. Par exemple, après avoir supprimé une personne, il sait à quoi devrait ressembler le bâtiment ou le paysage derrière, au lieu de se contenter d'un simple remplissage de texture. Cependant, pour des retouches commerciales extrêmement fines, il est recommandé d'effectuer les ajustements finaux avec Photoshop.
Q4 : Pourquoi mes instructions d’édition ne fonctionnent-elles pas parfois, et le modèle génère-t-il une image complètement nouvelle ?
C'est un problème courant. Assurez-vous que votre instruction exprime clairement qu'il s'agit d'une "édition" et non d'une "génération". Il est recommandé d'ajouter le préfixe "Generate an image:" et de préciser explicitement quelles parties de l'image originale doivent être conservées. Par exemple : "Generate an image: Edit the original photo - replace only the sky with a starry night, keep everything else exactly the same". Si le problème persiste, vous pouvez essayer d'ajouter "Do not change the composition or layout" pour contraindre le modèle.
Q5 : Quel est le coût d’un appel API pour le Inpainting Nano Banana ?
L'édition d'image avec Nano Banana 2 coûte environ 0,02 $ par appel, et avec Nano Banana Pro environ 0,04 $ par appel. En passant par la plateforme APIYI apiyi.com, vous bénéficiez de tarifs plus avantageux, avec un coût réel d'environ 0,14 ¥ par appel (Nano Banana 2), ce qui convient aux scénarios d'édition d'images en masse.
Résumé
La capacité d'inpainting (modification locale) de Nano Banana est bien plus puissante que ce que beaucoup de développeurs imaginent. Les 3 approches ont chacune leur scénario d'application :
- Édition par langage naturel (sans masque) — La plus pratique, adaptée à la plupart des cas, recommandée en priorité.
- Modification précise (avec masque) — La plus précise, adaptée pour un contrôle pixel par pixel de niveau professionnel.
- Édition itérative par conversation multi-tours — La plus flexible, adaptée aux modifications progressives complexes.
Quelle que soit l'approche choisie, le principe central reste le même : envoyer l'image et les instructions de modification via l'API standard Chat Completions. Nous recommandons de démarrer rapidement vos tests via la plateforme APIYI (apiyi.com), vous pourrez exécuter votre premier exemple d'inpainting en moins de 5 minutes.
Références
-
Documentation officielle Google AI – Nano Banana Image Generation
- Lien :
ai.google.dev/gemini-api/docs/image-generation - Description : Documentation complète de l'API de génération et d'édition d'images Gemini.
- Lien :
-
Blog Google Developers – Gemini 2.5 Flash Image
- Lien :
developers.googleblog.com/introducing-gemini-2-5-flash-image/ - Description : Explication détaillée de l'architecture technique et des capacités de Nano Banana.
- Lien :
-
DataCamp – Guide complet de Gemini 2.5 Flash Image
- Lien :
datacamp.com/tutorial/gemini-2-5-flash-image-guide - Description : Guide pratique avec des exemples de code complets.
- Lien :
📝 Auteur : Équipe APIYI | Pour les échanges techniques et l'accès à l'API, visitez apiyi.com
