Prepare a colourful poster including diagrams and images, short sentences for world mosquito day, take reference from k park for CM, include information regarding mosquito bite prevention for rural understanding
Aedes mosquito breeding site prevention diagram
World Mosquito Day 2026 theme history date August 20
insecticide treated bed net malaria prevention
mosquito life cycle larva pupa diagram
A colorful flat-design health poster illustration showing the mosquito life cycle in stagnant water (egg, larva, pupa, adult mosquito) alongside simple icons of common mosquito breeding sites found in rural homes: an open water drum, a discarded tyre, a clay pot, a coconut shell, and a puddle near a hand pump. Bright educational infographic style, no text or letters in the image, clean vector illustration style suitable for a public health poster.
mkdir -p /tmp/workspace/mosquito-poster/assets /tmp/workspace/mosquito-poster/output && cd /tmp/workspace/mosquito-poster/assets && curl -sL "https://cdn.orris.care/cdss_images/GLGCA_2442997_1763309336390_f414afb5-ff3b-44c5-965f-11307146f8b9.png" -o bednet.png && ls -la
cd /tmp/workspace/mosquito-poster/assets && curl -sL "https://cdn.orris.care/image-gen/99bf6e206e6a4d3bb21e8e8be8610378.png" -o lifecycle.png && python3 -c "from PIL import Image; im=Image.open('lifecycle.png'); print(im.size); im2=Image.open('bednet.png'); print(im2.size)"
/tmp/workspace
fc-list | grep -iE "dejavu|liberation|arial|noto" | head -20
python3 -c " import PIL, os p = os.path.dirname(PIL.__file__) print(p) for root,dirs,files in os.walk(p): for f in files: if f.lower().endswith('.ttf'): print(os.path.join(root,f)) "
~/mosquito-poster/build_poster.py
from PIL import Image, ImageDraw, ImageFont, ImageOps
import textwrap, os
FONT_PATH = "/usr/share/fonts/google-noto-vf/NotoSans[wght].ttf"
ASSETS = "/tmp/workspace/mosquito-poster/assets"
OUT = "/tmp/workspace/mosquito-poster/output/World_Mosquito_Day_Poster.png"
W, H = 1600, 2200
def font(size, weight=400):
f = ImageFont.truetype(FONT_PATH, size)
try:
f.set_variation_by_axes([weight])
except Exception:
pass
return f
def wrap_draw(draw, xy, text, fnt, fill, max_width, line_spacing=1.25, align="left"):
x, y = xy
words = text.split()
lines, cur = [], ""
for w in words:
test = (cur + " " + w).strip()
if draw.textlength(test, font=fnt) <= max_width:
cur = test
else:
lines.append(cur)
cur = w
if cur:
lines.append(cur)
for ln in lines:
if align == "center":
lw = draw.textlength(ln, font=fnt)
draw.text((x + (max_width - lw) / 2, y), ln, font=fnt, fill=fill)
else:
draw.text((x, y), ln, font=fnt, fill=fill)
y += int(fnt.size * line_spacing)
return y
# Base canvas - vertical gradient teal to deep blue
img = Image.new("RGB", (W, H), "#0b6e6e")
draw = ImageDraw.Draw(img)
top = (13, 110, 110)
bottom = (7, 54, 84)
for y in range(H):
t = y / H
r = int(top[0] + (bottom[0]-top[0])*t)
g = int(top[1] + (bottom[1]-top[1])*t)
b = int(top[2] + (bottom[2]-top[2])*t)
draw.line([(0,y),(W,y)], fill=(r,g,b))
YELLOW = "#FFD93D"
ORANGE = "#FF8C42"
WHITE = "#FFFFFF"
DARK = "#0B2E42"
RED = "#E63946"
GREEN = "#2ECC71"
CARD = "#FFFFFF"
margin = 60
# ---------- HEADER BAND ----------
draw.rectangle([0,0,W,300], fill="#073852")
draw.rectangle([0,290,W,300], fill=ORANGE)
f_kicker = font(34, 600)
f_title = font(92, 800)
f_sub = font(38, 500)
draw.text((margin, 30), "20th AUGUST", font=f_kicker, fill=YELLOW)
draw.text((W-margin-draw.textlength("Sir Ronald Ross Discovery, 1897", font=f_kicker), 30),
"Sir Ronald Ross Discovery, 1897", font=f_kicker, fill=YELLOW)
wrap_draw(draw, (margin, 85), "WORLD MOSQUITO DAY", f_title, WHITE, W-2*margin, line_spacing=1.05)
wrap_draw(draw, (margin, 205), "One Bite Can Change a Life - Protect Yourself, Protect Your Village",
f_sub, "#CFEFEF", W-2*margin)
# ---------- SECTION: Did you know / diseases strip ----------
y0 = 330
draw.rounded_rectangle([margin, y0, W-margin, y0+230], radius=24, fill=CARD)
f_h2 = font(40, 800)
f_body = font(28, 500)
draw.text((margin+30, y0+18), "Did You Know?", font=f_h2, fill=RED)
did_you_know = ("Sir Ronald Ross discovered in Secunderabad, India (1897) that female Anopheles "
"mosquitoes spread malaria. He won the Nobel Prize in 1902 and named 20th August "
"as World Mosquito Day.")
wrap_draw(draw, (margin+30, y0+70), did_you_know, f_body, DARK, W-2*margin-60)
# ---------- Diseases row ----------
y1 = y0 + 260
draw.rounded_rectangle([margin, y1, W-margin, y1+230], radius=24, fill="#FFF4E0")
f_h2b = font(38, 800)
draw.text((margin+30, y1+16), "Mosquitoes Spread These Diseases", font=f_h2b, fill=DARK)
diseases = [
("Anopheles", "Malaria", RED),
("Aedes", "Dengue, Chikungunya, Zika", ORANGE),
("Culex", "Japanese Encephalitis, Filariasis", "#6A4C93"),
("Mansonoides", "Filariasis", "#1B998B"),
]
box_w = (W - 2*margin - 60 - 3*20) / 4
bx = margin + 30
by = y1 + 80
f_dname = font(30, 800)
f_ddis = font(22, 500)
for name, dis, col in diseases:
draw.rounded_rectangle([bx, by, bx+box_w, by+140], radius=16, fill=col)
draw.ellipse([bx+box_w/2-22, by+12, bx+box_w/2+22, by+56], fill=WHITE)
draw.text((bx+box_w/2, by+18), "", font=f_dname, fill=col)
nlw = draw.textlength(name, font=f_dname)
draw.text((bx+box_w/2-nlw/2, by+64), name, font=f_dname, fill=WHITE)
wrap_draw(draw, (bx+12, by+100), dis, f_ddis, "#FFFFFF", box_w-24, align="center")
bx += box_w + 20
# ---------- Life cycle / breeding diagram image ----------
y2 = y1 + 260
diagram = Image.open(os.path.join(ASSETS, "lifecycle.png")).convert("RGB")
dw = W - 2*margin
dh = int(dw * diagram.height / diagram.width)
dh = min(dh, 560)
diagram = ImageOps.fit(diagram, (dw, dh), method=Image.LANCZOS)
draw.rounded_rectangle([margin, y2, W-margin, y2+dh+90], radius=24, fill=CARD)
f_h2c = font(38, 800)
draw.text((margin+30, y2+16), "Break the Breeding Cycle - No Water, No Mosquito!", font=f_h2c, fill="#0B6E6E")
img.paste(diagram, (margin, y2+80))
# ---------- Prevention tips section (rural focus) ----------
y3 = y2 + dh + 130
draw.rounded_rectangle([margin, y3, W-margin, H-260], radius=24, fill="#0E4D4D")
f_h1 = font(48, 800)
draw.text((margin+30, y3+20), "Prevention Tips for Villages & Homes", font=f_h1, fill=YELLOW)
tips = [
"Empty and scrub water pots, drums & coolers every week.",
"Cover wells, tanks & stored water tightly with a lid or cloth.",
"Fill or drain puddles near hand pumps, wells and cattle sheds.",
"Sleep under a mosquito net (ITN) every night, especially children.",
"Wear full-sleeve clothes in the evening and at night.",
"Use neem oil, repellent cream, coils or mats after dusk.",
"Throw away old tyres, tins, coconut shells - they collect rainwater.",
"Put small fish (Gambusia) in ponds and tanks to eat larvae.",
"Keep cattle sheds away from the house and clean regularly.",
"Tell your health worker (ASHA/ANM) about fever with chills at once.",
]
f_tip = font(30, 600)
num_col_w = (W - 2*margin - 60) / 2
ty = y3 + 100
tx = margin + 30
col = 0
row_start_y = ty
max_row_h = 0
for i, tip in enumerate(tips):
cx = tx + col * (num_col_w + 40)
circle_r = 24
draw.ellipse([cx, ty, cx+2*circle_r, ty+2*circle_r], fill=YELLOW)
numtxt = str(i+1)
nlw = draw.textlength(numtxt, font=font(26,800))
draw.text((cx+circle_r-nlw/2, ty+6), numtxt, font=font(26,800), fill=DARK)
end_y = wrap_draw(draw, (cx+2*circle_r+16, ty), tip, f_tip, WHITE, num_col_w-2*circle_r-16, line_spacing=1.2)
row_h = end_y - ty
max_row_h = max(max_row_h, row_h)
if col == 0:
col = 1
else:
col = 0
ty += max_row_h + 30
max_row_h = 0
# ---------- Bed net photo + community message ----------
y4 = H - 240
draw.rounded_rectangle([margin, y4, W-margin, H-40], radius=24, fill=CARD)
bednet = Image.open(os.path.join(ASSETS, "bednet.png")).convert("RGB")
bn_h = 180
bn_w = int(bn_h * bednet.width / bednet.height)
bednet = bednet.resize((bn_w, bn_h), Image.LANCZOS)
img.paste(bednet, (margin+20, y4+10))
msg_x = margin + 20 + bn_w + 40
f_h3 = font(34, 800)
f_body2 = font(26, 500)
wrap_draw(draw, (msg_x, y4+20), "Protect Your Family - Use a Mosquito Net Every Night",
f_h3, "#0E4D4D", W-margin-40-msg_x)
wrap_draw(draw, (msg_x, y4+90), "A clean village with no stagnant water is the best defence "
"against malaria, dengue and filariasis. Community action saves lives.",
f_body2, DARK, W-margin-40-msg_x)
draw.text((msg_x, y4+165), "Photo: WHO / Noor - Benedicte Kurzen", font=font(18,400), fill="#888888")
# ---------- Footer strip ----------
draw.rectangle([0, H-40, W, H], fill=ORANGE)
f_foot = font(22, 600)
foot_text = "Source: Park's Textbook of Preventive & Social Medicine (Community Medicine) - Mosquito-borne disease control"
flw = draw.textlength(foot_text, font=f_foot)
draw.text(((W-flw)/2, H-33), foot_text, font=f_foot, fill=DARK)
os.makedirs(os.path.dirname(OUT), exist_ok=True)
img.save(OUT, quality=95)
print("saved", OUT, img.size)
cd /tmp/workspace/mosquito-poster && python3 build_poster.py 2>&1 | tail -50
cd /tmp/workspace/mosquito-poster/output && python3 -c " from PIL import Image im = Image.open('World_Mosquito_Day_Poster.png') im2 = im.resize((im.width//2, im.height//2)) im2.save('preview.jpg', quality=80) print(im.size) " ls -la
~/mosquito-poster/build_poster.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/mosquito-poster/build_poster.py'
~/mosquito-poster/build_poster.py
Successfully replaced 1 instance(s) of the string in '/tmp/workspace/mosquito-poster/build_poster.py'
cd /tmp/workspace/mosquito-poster && sed -i 's/y2 = y1 + 260/y2 = y1 + 330/' build_poster.py && python3 build_poster.py && cd output && python3 -c " from PIL import Image im = Image.open('World_Mosquito_Day_Poster.png') im2 = im.resize((im.width//2, im.height//2)) im2.save('preview.jpg', quality=80) print(im.size) "
World Mosquito Day Poster
Image · PNG
Poster
World Mosquito Day Poster
Image · PNG