Google Play app icon: 512x512 32-bit PNG with alpha, 1024 KB

Play wants a 512 x 512, 32-bit PNG with alpha, at most 1024 KB. Get a transparent square from ChatGPT Image 2.5 on Sume, then resize and check the size.

5 min readSume
All posts

Google Play's preview-asset page lists the app icon as a 32-bit PNG with alpha, exactly 512 x 512 pixels, and at most 1024 KB. On Sume, the transparent square comes from ChatGPT Image 2.5 with background: "transparent" and output_format: "png", and the exact size is a Pillow resize afterward.

What Play specifies

The same page gives different rules for the feature graphic and screenshots: those must have no alpha. Only the icon is the alpha asset, so a flattened JPEG export is the wrong output for it.

Google Play preview asset formats (read 2026-10-03)
AssetFormatSizeFile size
App icon32-bit PNG (with alpha)512 x 512Up to 1024 KB
Feature graphicJPEG or 24-bit PNG (no alpha)1024 x 500No limit stated
ScreenshotsJPEG or 24-bit PNG (no alpha)320 to 3840 px per sideNo limit stated

The Sume side

The Image API docs say background: auto|transparent|opaque is supported by ChatGPT Image 2.5, which is openai/gpt-image-2.5. Other models reject a parameter they do not list with 400 unsupported_parameter. The docs also say that for transparent stills today you can use Image 1.0 with transparency: true, so if the request is refused on your account, that is the documented fallback. Ask for aspect_ratio: "1:1", which the GPT Image family lists.

A 200 response carries data[].url; a 202 means the 30-second block expired and the result is read from the job. The script stops on 202 rather than parsing the wrong body.

Resize to the exact size

Convert to RGBA so the alpha channel is guaranteed, resize with LANCZOS, save PNG, then compare the byte count with the 1024 KB limit. Flat artwork with a transparent surround is far below the limit; a photographic icon may not be.

import os, io, requests
from PIL import Image
r = requests.post(
    "https://api.sume.com/v1/images",
    headers={"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"},
    json={"model": "openai/gpt-image-2.5", "aspect_ratio": "1:1", "prompt": "bold rounded geometric app mark, flat colors, no text", "background": "transparent", "output_format": "png"},
    timeout=90,
)
r.raise_for_status()
if r.status_code != 200:
    raise SystemExit("202: read the finished job from /v1/jobs/{id}/result")
img = Image.open(io.BytesIO(requests.get(r.json()["data"][0]["url"], timeout=60).content))
icon = img.convert("RGBA").resize((512, 512), Image.LANCZOS)
icon.save("play-icon.png", optimize=True)
size_kb = os.path.getsize("play-icon.png") / 1024
print(f"{size_kb:.0f} KB")
assert size_kb <= 1024, "over the Play icon limit"

Why the byte limit rarely bites

A flat icon at 512 x 512 is usually tens of kilobytes as a PNG, so 1024 KB is a generous ceiling. It becomes relevant only when the mark has gradients, noise or a photographic texture, which also tend to look worse at launcher sizes. If the file is too large, reduce the palette with quantize before reaching for lossy options, since PNG is lossless and Play requires PNG. The page says the icon must be a 32-bit PNG with alpha, so do not quantize to a palette that drops the alpha channel without testing that the result still opens as RGBA. Keep an unresized master at the larger size the API returned; the store asks for exactly 512 x 512, but your website or app listing elsewhere may need a different size, and downscaling from a master is always cleaner than upscaling from a derived file.

Check before upload

  • Open the icon on both a light and a dark surface; alpha hides nothing when the mark is the same color as the background.
  • Play applies its own rounded mask for display, so keep the mark centered with margin instead of running it to the corners.
  • ChatGPT Image 2.5 is billed from token estimates, and the response usage.cost is the amount charged. Sume lists failed generations as not billed.
  • Do not use this file for the feature graphic or screenshots; both must have no alpha. See the feature graphic post.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume