popart.py

Created by schraf

Created on April 04, 2026

7.99 KB


from kandinsky import fill_rect

PATTERN = [195, 231, 126, 60, 60, 126, 231, 195]
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)

SCALE = 1

# Liste collée depuis Gimp — chaque tuple = une croix inversée (noire sur blanc)
BLACK_PIXELS = [(0, 0), (1, 0), (2, 0), (3, 0), (4, 0), (5, 0), (6, 0), (7, 0), (8, 0), (9, 0), (10, 0), (11, 0), (12, 0), (13, 0), (14, 0), (15, 0), (16, 0), (17, 0), (18, 0), (19, 0), (20, 0), (21, 0), (22, 0), (23, 0), (24, 0), (25, 0), (26, 0), (27, 0), (28, 0), (29, 0), (30, 0), (31, 0), (32, 0), (33, 0), (34, 0), (35, 0), (36, 0), (37, 0), (38, 0), (39, 0), (0, 1), (1, 1), (2, 1), (3, 1), (4, 1), (5, 1), (12, 1), (13, 1), (14, 1), (15, 1), (16, 1), (22, 1), (23, 1), (24, 1), (31, 1), (32, 1), (33, 1), (34, 1), (35, 1), (36, 1), (37, 1), (38, 1), (39, 1), (0, 2), (1, 2), (2, 2), (3, 2), (4, 2), (5, 2), (6, 2), (9, 2), (10, 2), (14, 2), (15, 2), (18, 2), (19, 2), (20, 2), (23, 2), (24, 2), (25, 2), (28, 2), (29, 2), (33, 2), (34, 2), (35, 2), (36, 2), (37, 2), (38, 2), (39, 2), (0, 3), (1, 3), (2, 3), (3, 3), (4, 3), (5, 3), (6, 3), (9, 3), (10, 3), (11, 3), (14, 3), (15, 3), (18, 3), (19, 3), (20, 3), (21, 3), (23, 3), (24, 3), (25, 3), (28, 3), (29, 3), (30, 3), (33, 3), (34, 3), (35, 3), (36, 3), (37, 3), (38, 3), (39, 3), (0, 4), (1, 4), (2, 4), (3, 4), (4, 4), (5, 4), (6, 4), (9, 4), (10, 4), (11, 4), (14, 4), (15, 4), (17, 4), (18, 4), (19, 4), (20, 4), (21, 4), (24, 4), (25, 4), (28, 4), (29, 4), (30, 4), (33, 4), (34, 4), (35, 4), (36, 4), (37, 4), (38, 4), (39, 4), (0, 5), (1, 5), (2, 5), (3, 5), (4, 5), (5, 5), (6, 5), (9, 5), (10, 5), (13, 5), (14, 5), (17, 5), (18, 5), (19, 5), (20, 5), (21, 5), (24, 5), (25, 5), (28, 5), (29, 5), (32, 5), (33, 5), (34, 5), (35, 5), (36, 5), (37, 5), (38, 5), (39, 5), (0, 6), (1, 6), (2, 6), (3, 6), (4, 6), (5, 6), (6, 6), (13, 6), (14, 6), (17, 6), (18, 6), (19, 6), (20, 6), (21, 6), (24, 6), (25, 6), (31, 6), (32, 6), (33, 6), (34, 6), (35, 6), (36, 6), (37, 6), (38, 6), (39, 6), (0, 7), (1, 7), (2, 7), (3, 7), (4, 7), (5, 7), (6, 7), (9, 7), (10, 7), (11, 7), (12, 7), (13, 7), (14, 7), (15, 7), (17, 7), (18, 7), (19, 7), (20, 7), (21, 7), (24, 7), (25, 7), (28, 7), (29, 7), (30, 7), (31, 7), (32, 7), (33, 7), (34, 7), (35, 7), (36, 7), (37, 7), (38, 7), (39, 7), (0, 8), (1, 8), (2, 8), (3, 8), (4, 8), (5, 8), (6, 8), (9, 8), (10, 8), (11, 8), (12, 8), (13, 8), (14, 8), (15, 8), (18, 8), (19, 8), (20, 8), (21, 8), (23, 8), (24, 8), (25, 8), (28, 8), (29, 8), (30, 8), (31, 8), (32, 8), (33, 8), (34, 8), (35, 8), (36, 8), (37, 8), (38, 8), (39, 8), (0, 9), (1, 9), (2, 9), (3, 9), (4, 9), (5, 9), (6, 9), (9, 9), (10, 9), (11, 9), (12, 9), (13, 9), (14, 9), (15, 9), (18, 9), (19, 9), (20, 9), (23, 9), (24, 9), (25, 9), (28, 9), (29, 9), (30, 9), (31, 9), (32, 9), (33, 9), (34, 9), (35, 9), (36, 9), (37, 9), (38, 9), (39, 9), (0, 10), (1, 10), (2, 10), (3, 10), (4, 10), (5, 10), (10, 10), (11, 10), (12, 10), (13, 10), (14, 10), (15, 10), (16, 10), (22, 10), (23, 10), (24, 10), (29, 10), (30, 10), (31, 10), (32, 10), (33, 10), (34, 10), (35, 10), (36, 10), (37, 10), (38, 10), (39, 10), (0, 11), (1, 11), (2, 11), (3, 11), (4, 11), (5, 11), (6, 11), (7, 11), (8, 11), (9, 11), (10, 11), (11, 11), (12, 11), (13, 11), (14, 11), (15, 11), (16, 11), (17, 11), (18, 11), (19, 11), (20, 11), (21, 11), (22, 11), (23, 11), (24, 11), (25, 11), (26, 11), (27, 11), (28, 11), (29, 11), (30, 11), (31, 11), (32, 11), (33, 11), (34, 11), (35, 11), (36, 11), (37, 11), (38, 11), (39, 11), (0, 12), (1, 12), (2, 12), (3, 12), (4, 12), (5, 12), (6, 12), (7, 12), (8, 12), (9, 12), (10, 12), (11, 12), (12, 12), (13, 12), (14, 12), (15, 12), (16, 12), (17, 12), (18, 12), (19, 12), (20, 12), (21, 12), (22, 12), (23, 12), (24, 12), (25, 12), (26, 12), (27, 12), (28, 12), (29, 12), (30, 12), (31, 12), (32, 12), (33, 12), (34, 12), (35, 12), (36, 12), (37, 12), (38, 12), (39, 12), (0, 13), (1, 13), (2, 13), (3, 13), (4, 13), (6, 13), (7, 13), (8, 13), (9, 13), (10, 13), (11, 13), (12, 13), (22, 13), (23, 13), (24, 13), (25, 13), (26, 13), (27, 13), (0, 14), (1, 14), (2, 14), (3, 14), (4, 14), (7, 14), (8, 14), (9, 14), (10, 14), (11, 14), (12, 14), (13, 14), (14, 14), (18, 14), (19, 14), (20, 14), (21, 14), (24, 14), (25, 14), (26, 14), (27, 14), (29, 14), (30, 14), (31, 14), (32, 14), (36, 14), (37, 14), (38, 14), (0, 15), (1, 15), (2, 15), (3, 15), (7, 15), (8, 15), (9, 15), (10, 15), (11, 15), (12, 15), (13, 15), (14, 15), (18, 15), (19, 15), (20, 15), (21, 15), (25, 15), (26, 15), (27, 15), (29, 15), (30, 15), (31, 15), (32, 15), (36, 15), (37, 15), (38, 15), (0, 16), (1, 16), (2, 16), (3, 16), (8, 16), (9, 16), (10, 16), (11, 16), (12, 16), (13, 16), (14, 16), (18, 16), (19, 16), (20, 16), (21, 16), (25, 16), (26, 16), (27, 16), (28, 16), (29, 16), (30, 16), (31, 16), (32, 16), (36, 16), (37, 16), (38, 16), (39, 16), (0, 17), (1, 17), (2, 17), (8, 17), (9, 17), (10, 17), (11, 17), (12, 17), (13, 17), (14, 17), (18, 17), (19, 17), (20, 17), (21, 17), (25, 17), (26, 17), (27, 17), (28, 17), (29, 17), (30, 17), (31, 17), (32, 17), (36, 17), (37, 17), (38, 17), (39, 17), (0, 18), (1, 18), (2, 18), (4, 18), (9, 18), (10, 18), (11, 18), (12, 18), (13, 18), (14, 18), (18, 18), (19, 18), (20, 18), (21, 18), (24, 18), (25, 18), (26, 18), (27, 18), (28, 18), (29, 18), (30, 18), (31, 18), (32, 18), (36, 18), (37, 18), (38, 18), (39, 18), (0, 19), (1, 19), (3, 19), (4, 19), (5, 19), (9, 19), (10, 19), (11, 19), (12, 19), (13, 19), (14, 19), (23, 19), (24, 19), (25, 19), (26, 19), (27, 19), (28, 19), (29, 19), (30, 19), (31, 19), (32, 19), (36, 19), (37, 19), (38, 19), (39, 19), (0, 20), (1, 20), (3, 20), (4, 20), (5, 20), (9, 20), (10, 20), (11, 20), (12, 20), (13, 20), (14, 20), (18, 20), (19, 20), (20, 20), (23, 20), (24, 20), (25, 20), (26, 20), (27, 20), (28, 20), (29, 20), (30, 20), (31, 20), (32, 20), (36, 20), (37, 20), (38, 20), (39, 20), (0, 21), (1, 21), (10, 21), (11, 21), (12, 21), (13, 21), (14, 21), (18, 21), (19, 21), (20, 21), (24, 21), (25, 21), (26, 21), (27, 21), (28, 21), (29, 21), (30, 21), (31, 21), (32, 21), (36, 21), (37, 21), (38, 21), (39, 21), (0, 22), (2, 22), (3, 22), (4, 22), (5, 22), (6, 22), (10, 22), (11, 22), (12, 22), (13, 22), (14, 22), (18, 22), (19, 22), (20, 22), (21, 22), (25, 22), (26, 22), (27, 22), (28, 22), (29, 22), (30, 22), (31, 22), (32, 22), (36, 22), (37, 22), (38, 22), (39, 22), (0, 23), (2, 23), (3, 23), (4, 23), (5, 23), (6, 23), (11, 23), (12, 23), (13, 23), (14, 23), (18, 23), (19, 23), (20, 23), (21, 23), (25, 23), (26, 23), (27, 23), (28, 23), (29, 23), (30, 23), (31, 23), (32, 23), (36, 23), (37, 23), (38, 23), (39, 23), (2, 24), (3, 24), (4, 24), (5, 24), (6, 24), (7, 24), (11, 24), (12, 24), (13, 24), (14, 24), (18, 24), (19, 24), (20, 24), (21, 24), (22, 24), (26, 24), (27, 24), (28, 24), (29, 24), (30, 24), (31, 24), (32, 24), (36, 24), (37, 24), (38, 24), (39, 24), (3, 25), (4, 25), (5, 25), (20, 25), (21, 25), (22, 25), (23, 25), (27, 25), (28, 25), (29, 25), (30, 25), (38, 25), (39, 25), (0, 26), (1, 26), (2, 26), (3, 26), (4, 26), (5, 26), (6, 26), (7, 26), (8, 26), (9, 26), (10, 26), (11, 26), (12, 26), (13, 26), (14, 26), (15, 26), (16, 26), (17, 26), (18, 26), (19, 26), (20, 26), (21, 26), (22, 26), (23, 26), (24, 26), (25, 26), (26, 26), (27, 26), (28, 26), (29, 26), (30, 26), (31, 26), (32, 26), (33, 26), (34, 26), (35, 26), (36, 26), (37, 26), (38, 26), (39, 26), (0, 27), (1, 27), (2, 27), (3, 27), (4, 27), (5, 27), (6, 27), (7, 27), (8, 27), (9, 27), (10, 27), (11, 27), (12, 27), (13, 27), (14, 27), (15, 27), (16, 27), (17, 27), (18, 27), (19, 27), (20, 27), (21, 27), (22, 27), (23, 27), (24, 27), (25, 27), (26, 27), (27, 27), (28, 27), (29, 27), (30, 27), (31, 27), (32, 27), (33, 27), (34, 27), (35, 27), (36, 27), (37, 27), (38, 27), (39, 27)]


size = 8 * SCALE

for cy in range(28):
 for cx in range(40):
  invert = (cx, cy) in BLACK_PIXELS
  fg = WHITE if invert else BLACK
  bg = BLACK if invert else WHITE
  for r in range(8):
   byte = PATTERN[r]
   for col in range(8):
    bit = (byte >> (7 - col)) & 1
    fill_rect(cx * size + col * SCALE, cy * size + r * SCALE,
              SCALE, SCALE, fg if bit else bg)

During your visit to our site, NumWorks needs to install "cookies" or use other technologies to collect data about you in order to:

With the exception of Cookies essential to the operation of the site, NumWorks leaves you the choice: you can accept Cookies for audience measurement by clicking on the "Accept and continue" button, or refuse these Cookies by clicking on the "Continue without accepting" button or by continuing your browsing. You can update your choice at any time by clicking on the link "Manage my cookies" at the bottom of the page. For more information, please consult our cookies policy.