an.media.grid#
Tile images into one contact sheet: tile() (an#347).
A small pure function over PNG bytes — decoded and encoded by
an.bench.png (numpy and the standard library), each image fitted into a
square cell without distortion, an optional caption under each. an probe
tiles several instants of a shot with it and an library sheet one specimen
per asset.
Candidate fleet component: one production wrote three ad hoc copies of this before it existed (design of an#331, §5.3).
>>> from an.bench.png import decode_png, encode_png
>>> import numpy as np
>>> red = encode_png(np.full((4, 8, 3), (255, 0, 0), np.uint8))
>>> sheet = decode_png(tile([red, red, red], cell=16, columns=2))
>>> sheet.shape
(44, 44, 3)
Functions
|
One PNG holding every image of |
|
|
|
The caption that fits |
- an.media.grid.fit_caption(text, room, measure)[source]#
The caption that fits
room(inmeasure’s units): a long one is shortened with…; a(head, tail)pair keeps its tail whole and shortens only the head (an#460), unless not even the tail fits.- Return type:
>>> fit_caption(("cutan:prop.desk-oversimplified", " [free]"), 20, len) 'cutan:prop.d… [free]' >>> fit_caption("cutan:prop.desk-oversimplified [free]", 20, len) 'cutan:prop.desk-ove…'
- an.media.grid.tile(images, *, cell=256, columns=None, labels=None, gap=4, background=(255, 255, 255))[source]#
One PNG holding every image of
images(PNG bytes), each in acellsquare.- Return type:
columns: cells per row (default: the smallest square grid that holds them) labels: one caption per image, drawn under its cell; a
(head, tail)pair is shortened in its head only, so the tail always shows
- an.media.grid.trim(image, *, tolerance=8, margin=0.06)[source]#
image(PNG bytes) cropped to what differs from its corner colour, plus a margin.An image that is all background is returned unchanged.
- Return type:
>>> import numpy as np >>> a = np.full((20, 20, 3), 255, np.uint8); a[5:9, 10:12] = 0 >>> decode_png(trim(encode_png(a), margin=0)).shape (4, 2, 3)