Véritable canal alpha avec l'API OpenAI Image : générer et vérifier des PNG transparents
Un guide pratique pour générer des ressources graphiques PNG avec un véritable canal alpha via l'API OpenAI Image : combiner les paramètres d'API, intégrer des formulations d'exclusion au sein d'un même prompt et vérifier la qualité des contours avec Pillow.
Sommaire

Lorsque les interfaces utilisateur ou les présentations nécessitent des éléments graphiques — comme des icônes ou des illustrations thématiques —, l’exigence principale est élémentaire : un arrière-plan réellement transparent enregistré au format PNG.
En pratique, l’utilisation de modèles génératifs d’images pose deux problèmes récurrents :
- Le modèle dessine une grille de transparence en damier directement dans la trame de pixels (pseudo-transparence), renvoyant ainsi une image entièrement opaque.
- Le fichier comporte bien un canal alpha, mais les contours de l’objet présentent des franges ou des halos indésirables, ce qui donne un rendu négligé sur des arrière-plans arbitraires.
Bien que les paramètres de l’API permettent de demander la transparence, le format de sortie et la qualité des bords nécessitent toujours une vérification. Nous détaillons ci-dessous la configuration de la requête, la structuration du prompt et la validation rapide du PNG obtenu.
1. Paramètres de l’API et rédaction du prompt
La retouche d’images existantes (Edits) constitue une tâche distincte ; nous nous concentrons ici sur la génération de nouvelles ressources à partir de zéro (Generations).
D’après le OpenAI Image Generation Guide, la transparence se contrôle en combinant deux paramètres :
background: acceptetransparent,opaqueouauto. Spécifieztransparentpour demander un arrière-plan transparent.output_format: définissez-le surpng(ouwebp), car le formatjpegne prend pas en charge de canal alpha.
Le paramètre de l’API demande la transparence au niveau du format, mais le prompt doit également isoler explicitement l’objet et proscrire tout élément environnant indésirable.
Les recommandations du OpenAI Image Prompting Guide permettent d’éliminer les artefacts parasites :
An isolated 3D isometric glass cube with glowing layered circuit boards inside, modern tech UI asset, smooth glossy reflections, crisp defined edges, centered composition, fully isolated on a transparent background, no drop shadow, no solid backdrop, no floor reflection, no checkerboard pattern.
Cette description fixe le sujet avec des délimitations nettes (crisp defined edges) tout en excluant explicitement les ombres portées (no drop shadow), les arrière-plans unis (no solid backdrop) et les grilles de transparence simulées (no checkerboard pattern).
2. Génération d’images via l’API Python
Pour envoyer des requêtes à l’API, utilisez la bibliothèque officielle openai :
import base64
from openai import OpenAI
client = OpenAI()
prompt = (
"An isolated 3D isometric glass cube with glowing layered circuit boards inside, "
"modern tech UI asset, smooth glossy reflections, crisp defined edges, "
"centered composition, fully isolated on a transparent background, "
"no drop shadow, no solid backdrop, no floor reflection, no checkerboard pattern"
)
response = client.images.generate(
model="gpt-image-2.5-flare",
prompt=prompt,
background="transparent",
output_format="png",
)
image_b64 = response.data[0].b64_json
image_bytes = base64.b64decode(image_b64)
with open("ui_cube_asset.png", "wb") as file:
file.write(image_bytes)
3. Vérification du canal alpha et des contours avec Pillow
La seule présence d’un canal alpha ne garantit pas des contours impeccables : des halos clairs ou sombres ainsi que du bruit semi-transparent peuvent subsister autour du sujet.
Une vérification de base du fichier comprend :
- La confirmation du mode
RGBAattendu pour les fichiers PNG transparents. - Le contrôle des cas limites : le fichier doit contenir à la fois des pixels visibles et des zones transparentes (l’image ne doit être ni complètement transparente, ni entièrement opaque).
- Le compositing sur des arrière-plans contrastés, clair et sombre, pour évaluer visuellement la netteté du contour.
Voici un script de vérification compact utilisant Pillow :
from PIL import Image
def verify_and_composite(image_path: str):
with Image.open(image_path) as img:
# Vérification du mode RGBA attendu
if img.mode != "RGBA":
print("Erreur : l'image n'est pas en mode RGBA.")
return
# Vérification de la présence de pixels transparents et visibles
alpha = img.getchannel("A")
min_alpha, max_alpha = alpha.getextrema()
if max_alpha == 0:
print("Avertissement : l'image est entièrement transparente.")
return
if min_alpha == 255:
print("Avertissement : l'image est entièrement opaque.")
return
# Superposition sur fond clair (pour révéler une bordure sombre)
bg_light = Image.new("RGBA", img.size, (255, 255, 255, 255))
Image.alpha_composite(bg_light, img).convert("RGB").save("preview_light.png")
# Superposition sur fond sombre (pour révéler les halos blancs)
bg_dark = Image.new("RGBA", img.size, (17, 24, 39, 255))
Image.alpha_composite(bg_dark, img).convert("RGB").save("preview_dark.png")
Les aperçus générés vous permettent d’évaluer rapidement les bords de l’élément : le contour doit s’intégrer harmonieusement sur des surfaces claires et sombres, sans frange parasite ni arrière-plan incrusté.