nine_slice — GFX2D sprite op

Data kinds: rgbargba

Call: import gfx2d; gfx2d.nine_slice(sprite, left, right, top, bottom, out_height, out_width) (or opsgfx2d.get("nine_slice"))

Usage

Stretch a frame to a new size without deforming its corners.

The four corners are copied bit for bit, the four edges are stretched

along one axis only, and the centre is stretched along both. This is the

standard way a UI panel grows: the border keeps its thickness at any size.

Stretching is nearest-neighbour on the interior spans, so an output the same

size as the input is the exact identity — no resampling blur creeps in when

a panel happens not to need stretching.

Raises ValueError: borders that meet or cross (`left + right >= width`),

an output smaller than the borders it must preserve.

References (sample data, literature)

• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).

• Operator provenance and references — the sources of the research/methods this op family came from.

• The canonical algorithm (author, year) and its uses are named in the family usage guide above.

Runnable examples (verified samples that actually call this op)

gfx2d_scenepy -3.11 examples/gfx2d_scene.py

Ops the type connects to (they accept rgba as input)

premultiply · alpha_composite · sprite_blit · sprite_transform · sprite_sheet_slice

Same category (sprite)

sprite_synthesize · sprite_blit · sprite_transform · sprite_sheet_slice


*Provenance: gfx2d.py — GFX2D operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.