AI coat of arms or crest as a transparent PNG, with alpha check
Generate a family crest or team badge as a transparent PNG with gpt-image-2.5's background parameter, then verify the alpha channel before it goes on merch.

To get a crest or badge as a transparent PNG, call openai/gpt-image-2.5 with background: "transparent" and output_format: "png", describe a flat, symmetrical emblem on nothing, and check the alpha channel of the file you get back. A transparent request that comes back with a baked-in white or checkerboard backdrop is the failure to test for.
Sume lists background: auto|transparent|opaque for ChatGPT Image 2.5. OpenAI's image guide says transparent output needs PNG or WebP.
The request
Describe the emblem as an object, not a scene: a shield, a charge, supporters, a scroll with room for a motto. Leave the motto text for code; heraldry mottos are exact strings.
{
"model": "openai/gpt-image-2.5",
"prompt": "A flat heraldic shield emblem, symmetrical, bold outlines, a stag's head above two crossed oak branches, limited palette of navy, gold and cream. Empty scroll banner underneath. Nothing behind the emblem. No lettering.",
"background": "transparent",
"output_format": "png",
"aspect_ratio": "1:1",
"quality": "high"
}Alpha check before it ships
Open the file and measure how much of it is actually transparent. This script builds a test image so it runs as is; pass your own file path in place of the generated one.
from PIL import Image
image = Image.new("RGBA", (64, 64), (0, 0, 0, 0)) # replace with Image.open("crest.png")
for x in range(16, 48):
for y in range(16, 48):
image.putpixel((x, y), (200, 160, 40, 255))
assert image.mode == "RGBA", "no alpha channel"
alpha = image.getchannel("A")
clear = sum(1 for value in alpha.getdata() if value == 0)
share = clear / (image.width * image.height)
print(f"fully transparent: {share:.0%}")
assert share > 0.05, "almost nothing is transparent: backdrop was baked in"Format and transparency notes (read 2026-10-04)
| Setting | Value | Source |
|---|---|---|
| background | transparent | Sume Image API docs (ChatGPT Image 2.5) |
| output_format | png | OpenAI guide: transparent needs PNG or WebP |
| Older route | Image 1.0 takes transparency: true, retiring soon | Sume Image 1.0 and Image API docs |
| Other models | A parameter a model does not list returns 400 unsupported_parameter | Sume Image API docs |
Before it goes on merch
Check small sizes. Fine linework that reads at 2,000 pixels can fill in at badge size, so shrink the PNG to the real size and look again. Put the motto and any name in a separate text layer.
Sources
Related posts
More in Use cases
- AI cross-stitch pattern: generate art, then grid and count in Pillow
Turn an AI image into a cross-stitch chart: generate simple art, shrink it to a stitch grid, cut to N colours and count stitches per colour with Pillow code.
- AI embroidery patch design via API: transparent art, fewer colors
Generate flat patch art with a transparent background through GPT Image 2.5, then cut it to a fixed colour count in Pillow before you send it to a digitizer.
- AI enamel pin design via API: flat art and a die-line in Pillow
Generate flat enamel-pin art on a transparent background, count the fills, and draw a cut line around the alpha shape in Pillow. Code and checks included.
- AI illustrated map poster via API: art first, labels in code
Generate the illustrated map art at 2:3 with Nano Banana 2, leave the lettering out, then draw every place name in Pillow from a list so none are misspelled.
Written by Sume