Chrome Web Store marquee 1400x560: crop a 21:9 Sume image

The optional marquee is 1400x560, a 5:2 ratio no Sume model lists. Generate 21:9 on FLUX.2 Pro and crop 6.7% of the height, or lose 20% from a 2:1 image.

5 min readSume
All posts

The Chrome Web Store marquee promotional image is optional and 1400 x 560 pixels, which is a 5:2 ratio (2.5 wide to 1 high). No Sume image model lists 5:2, so the cleanest route is to request 21:9 from FLUX.2 Pro and crop 6.7% off the height. Starting from a 2:1 image would cost you 20% of the height instead.

What the store asks for

Chrome's image page separates required assets from optional ones. The small promotional tile at 440 x 280 is required, and the marquee at 1400 x 560 is optional. Its design advice for promotional images is to avoid text, to make sure the image still works when shrunk to half size, and to use saturated colors rather than a lot of white and light gray.

Chrome Web Store promotional images (read 2026-10-03)
AssetSizeStatus
Small promo tile440 x 280Required
Marquee promo tile1400 x 560Optional

Pick the nearest ratio, then crop

The target is 1400 / 560 = 2.5. Cropping only removes pixels, so the source must be wider than the target and you cut height. The table shows what each native ratio leaves you, from the ratio lists in the Image API catalog.

Height lost when cropping to 5:2, arithmetic on listed ratios (read 2026-10-03)
Source ratioWidth / heightHeight keptLost
21:92.33393.3%6.7%
2:12.00080.0%20.0%
16:91.77871.1%28.9%

Which models list 21:9

FLUX.2 Pro and Flex, Qwen Image, Recraft V4, Nano Banana 2 and Nano Banana Pro list 21:9 in the catalog; the GPT Image family, Seedream and Imagen do not. The docs also warn that a ratio a model does not list is rejected, and that auto is not accepted everywhere, so check GET /v1/images/models for the model you pin. FLUX.2 Pro lists $0.03 for the first megapixel and $0.015 for each additional one (rounded up), before Sume's 1.25 multiplier, so a larger output costs more than a 1 MP one; read usage.cost for the real figure. A failed generation is not billed.

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": "black-forest-labs/flux.2-pro", "aspect_ratio": "21:9",
          "prompt": "wide abstract gradient scene of floating browser tabs, saturated colors, no text"},
    timeout=60,
)
r.raise_for_status()
if r.status_code != 200:
    raise SystemExit("202: read the job result instead")
img = Image.open(io.BytesIO(requests.get(r.json()["data"][0]["url"], timeout=60).content)).convert("RGB")
w, h = img.size
new_h = round(w * 560 / 1400)          # 5:2 target
top = (h - new_h) // 2
img.crop((0, top, w, top + new_h)).resize((1400, 560), Image.LANCZOS).save("marquee.png")

Cost and iteration

Marquee art is a place where you will want several drafts, since you judge it at a glance and at half size. Generate three or four variants in separate requests, throw away the ones where the subject sits near the top or bottom edge, and crop only the winner. The n parameter exists in the Image API, but check the catalog entry for the model first, because a model that does not list a parameter rejects it. Each request returns usage.cost, so you can sum the drafts and see what the exploration cost without reading a price table.

The listing images are separate from your product's own screenshots. Screenshots should show the real interface, and an image model cannot do that honestly; the marquee is the one slot where an illustrative scene is normal.

Placing the content

The crop trims the top and bottom evenly, so keep the focal point in the middle band. The store says to avoid text in promotional images, which suits an image model's weakness with lettering anyway. Look at a 700 x 280 version of the file, which is half size, before you upload it. Screenshots and the small tile have their own posts: see the 440x280 tile.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume