Nova Canvas rejects PNGs with transparent pixels: flatten before edits

Nova Canvas needs 8-bit PNG or JPEG with no transparent pixels in the alpha channel. Flatten cutouts onto white before any image edit, here and on Sume.

4 min readSume
All posts

A cutout PNG with a transparent background is the usual input that breaks Nova Canvas. Amazon's request guide (read 2026-10-06) says inputs must be PNG or JPEG at 8 bits per channel, and an alpha channel in a PNG must hold no transparent pixels. Output and input sides are 320 to 4096 pixels.

Flatten once, upstream

The simplest fix is to composite onto a solid colour before the file leaves your system. Pick white for packshots or a neutral gray that does not appear in the product.

from PIL import Image

def flatten(path: str, out: str, bg=(255, 255, 255)) -> None:
    im = Image.open(path).convert("RGBA")
    base = Image.new("RGBA", im.size, bg + (255,))
    base.alpha_composite(im)
    base.convert("RGB").save(out, "PNG")

flatten("cutout.png", "cutout-flat.png")
print(Image.open("cutout-flat.png").mode)

Does Sume have the same rule?

The Sume docs do not say how an edit reference with transparency is treated, and behaviour can differ by model. Do not assume it works. Flatten first, host the flat file at a public HTTPS URL, and send it in input_references. If you need transparency in the result, ask for it with background: "transparent", which only the two ChatGPT Image 2.5 variants accept.

A cheap guard

Add the check to your upload step so a transparent file never reaches the API, whichever vendor is behind it.

  • Reject files whose mode is RGBA and whose alpha has any value below 255, or flatten them.
  • Convert 16-bit PNGs to 8-bit.
  • Keep the original; send the flattened copy.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume