Edge Add-ons small tile 440x280: crop a 3:2 Sume image

Edge's small promotional tile must be exactly 440 x 280, a 1.571 ratio. Sume lists 3:2 for FLUX.2 Pro, so crop 4.5% of the height and resize.

5 min readSume
All posts

On the Microsoft Edge Add-ons page in Microsoft Learn, the small promotional tile is optional and must be 440 x 280 pixels. That is a ratio of 1.571, close to 3:2 (1.5) but not equal. Generate 3:2 on Sume with a model that lists it, then crop 4.5% off the height and resize to the exact size.

Where the tile sits among the listing assets

Edge treats these as separate uploads per language, and each has a Duplicate option that copies it to the other languages.

Edge Add-ons store listing images (read 2026-10-03)
AssetRequiredSize
Extension logoYes, per language1:1, 300 x 300 recommended, 128 x 128 minimum
Small promotional tileOptional440 x 280
Large promotional tileOptional1400 x 560, PNG
ScreenshotsOptional, up to 6640 x 480 or 1280 x 800

The crop arithmetic

A 3:2 source of width W has height W/1.5. The target height for the same width is W/1.571, which is 95.5% of that. Cropping only cuts height, so 4.5% disappears, about 2.3% from the top and bottom each. That is small enough that a centered subject is untouched.

3:2 is in the FLUX.2 Pro, FLUX.2 Flex, Qwen Image, Recraft V4 and Seedream catalog lists, and in the Nano Banana models. The GPT Image family does not list it.

Generate, crop, resize

The script crops to the target ratio, then resizes to 440 x 280 with LANCZOS. Start from the full-size master so the downsample stays crisp.

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": "3:2", "prompt": "bright abstract scene of overlapping browser windows, saturated colors, no text"},
    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))
w, h = img.size
target = 440 / 280
if w / h > target:
    nw = round(h * target)
    img = img.crop(((w - nw) // 2, 0, (w - nw) // 2 + nw, h))
else:
    nh = round(w / target)
    img = img.crop((0, (h - nh) // 2, w, (h - nh) // 2 + nh))
img = img.convert("RGB").resize((440, 280), Image.LANCZOS)
img.save("edge-small-tile.png")

Checking the file

After the resize, open the file at actual size and at half size. The tile is shown next to other extensions, so the subject has to read as a shape, not as detail. Confirm the dimensions with Pillow rather than by eye, since a crop that rounds the wrong way can leave a one pixel border after the resize. The page requires exactly 440 x 280, so assert img.size == (440, 280) in the script before you upload. If the generated art has a strong horizon or a face near the top edge, crop from the top instead of the center for that image. Edge lets you duplicate an uploaded tile to every other language, so one generated tile with no lettering covers a multilingual listing without more generations.

Design notes from the vendor and common sense

Edge's page does not give design rules for the tile beyond its size. Chrome's image guidance, which is a different store, asks for no text and saturated colors; both are sensible here since the tile shows next to other extensions at thumbnail size. Keep the subject centered, and check the 440 pixel result at half size. One tile costs one generation, and FLUX.2 Pro lists at $0.03 before Sume's 1.25 multiplier, so each attempt is $0.0375. Failed generations are not billed.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume