A 2x2 grid of urban street posters, each blending brush-stroke heroes with figures woven between strokes, using dark patina and four-color palettes for four historic cities.
2x2 grid, 16:9, do this for 4 historic cities: class StreetTributePoster:
def __init__(self, TOPIC):
s = infer(TOPIC) # word, figure+action, glyphs, accent, tagline
self.s = s
def build_weave(self):
back, front = split_strokes(self.s.word) # some strokes behind figure, some in front
return [ Layer(z=1, strokes=back),
Layer(z=2, figure=self.s.figure), # the weave: figure BETWEEN stroke sets
Layer(z=3, strokes=front) ]
def render(self):
return compose( ground=dark+patina,
word=brush_hero(self.s.word, drips=True, dry_brush=True), # S₁
weave=self. build_weave(), # S₂
palette={BLACK, WHITE, self.s.accent, muted_secondary}, # S₃ (≤4)
orbit=[vertical_script, emblem_object, flora, handwritten_tagline], # S₄
layout=DENSE_BALANCED ) # S₅
def verify(self, img):
assert brush_texture(img.word) and drips(img.word) and thumb_legible(img.word), "S₁"
assert figure_between_strokes(img) and not photoreal(img.figure), "S₂"
assert color_count(img) <= 4 and grunge(img), "S₃"
assert glyphs_from_topic(img, self.s) and handwritten(img.tagline), "S₄"
assert hierarchy(img)==[WORD, FIGURE, GLYPHS] and balanced(img), "S₅"
StreetTributePoster(TOPIC).render()
Join our affiliate program and earn 30% recurring commission for every referral. 💰
Join 500+ affiliates already earning