AI low-poly and voxel icons: a transparent set with one style anchor
Generate low-poly or voxel icons as transparent PNGs with gpt-image-2.5: one anchor icon, then the rest as references, with a size check at 64 and 128 pixels.
For a low-poly or voxel icon set, generate one anchor icon with openai/gpt-image-2.5, background: "transparent" and output_format: "png", then pass it as a reference for every other icon. Describe the style in the same words each time: flat shaded facets, a fixed light direction, one palette.
Faceted art holds up better at small sizes than fine illustration, but check each icon at the size you will ship before accepting it.
Style line to reuse
Paste the same sentence into every prompt and change only the subject.
{
"model": "openai/gpt-image-2.5",
"prompt": "Low-poly 3D icon, flat shaded triangular facets, light from the upper left, teal and orange palette, centred, nothing behind it, no text. Subject: a paper airplane.",
"input_references": [
{"type": "image_url", "image_url": {"url": "https://example.com/anchor-cube.png"}}
],
"background": "transparent",
"output_format": "png",
"aspect_ratio": "1:1"
}Shrink check (read 2026-10-04)
A 1024-pixel icon shown at 64 or 128 pixels loses facets. The table gives the reduction factor, computed from 1024.
| Shipped size | Reduction | Pixels per facet edge if the icon has 8 facets across |
|---|---|---|
| 32 | 32x | 4 |
| 64 | 16x | 8 |
| 128 | 8x | 16 |
| 256 | 4x | 32 |
Contact sheet
Render every icon at the real sizes on one sheet and look at it before approving the set. This script runs as is on placeholder squares.
from PIL import Image
icons = [Image.new("RGBA", (1024, 1024), (30 * i, 120, 160, 255)) for i in range(1, 5)]
sheet = Image.new("RGBA", (4 * 140, 140), (255, 255, 255, 255))
for i, icon in enumerate(icons):
sheet.paste(icon.resize((128, 128), Image.LANCZOS), (i * 140 + 6, 6))
sheet.save("contact-sheet.png")
print(sheet.size)When one drifts
If a single icon breaks the style, regenerate just that one with the anchor and the previous good icon as references. gpt-image-2.5 accepts up to 16 references, and a failed generation is not billed.
Sources
Related posts
More in Use cases
- AI memory match game cards: 8 pairs, one style, deck built in code
Make a memory-match deck with the image API: eight subjects in one style via a reference image, then duplicate, shuffle and lay out the deck in Pillow.
- AI music evidence file for an agency hand-off: job, engine, terms
What an agency should keep per AI music track: job record, engine, prompt, metadata, plan, terms date. What Sume returns and what vendor pages let you cite.
- AI nail art preview from a hand photo: a mask_url edit on one finger
Preview a nail design on a client's hand photo with a mask_url edit on gpt-image-2.5: a mask limited to the nails, a reference for the design, and edge checks.
- AI paper doll cutouts: transparent outfits that fit one body, via API
Make paper-doll dress-up pieces: one body pose as the anchor, each outfit as a transparent PNG using the body as a reference, then print them at a shared scale.
Written by Sume