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.

5 min readSume
All posts

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)

Transparent PNG settings (read 2026-10-04)
SettingValueSource
backgroundtransparentSume Image API docs (ChatGPT Image 2.5)
output_formatpngOpenAI guide: transparent needs PNG or WebP
Older routeImage 1.0 takes transparency: true, retiring soonSume Image 1.0 and Image API docs
Other modelsA parameter a model does not list returns 400 unsupported_parameterSume 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

All Use cases posts

Written by Sume