You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
1.7 KiB
75 lines
1.7 KiB
# LexillaLogo.py |
|
# Requires Python 3.6. |
|
# Requires Pillow https://python-pillow.org/, tested with 7.2.0 on Windows 10 |
|
|
|
import random |
|
from PIL import Image, ImageDraw, ImageFont |
|
|
|
colours = [ |
|
(136,0,21,255), |
|
(237,28,36,255), |
|
(255,127,39,255), |
|
(255,201,14,255), |
|
(185,122,87,255), |
|
(255,174,201,255), |
|
(181,230,29,255), |
|
(34,177,76,255), |
|
(153,217,234,255), |
|
(0,162,232,255), |
|
(112,146,190,255), |
|
(63,72,204,255), |
|
(200,191,231,255), |
|
] |
|
|
|
width = 1280 |
|
height = 150 |
|
|
|
def drawLines(dr): |
|
for y in range(0,height, 2): |
|
x = 0 |
|
while x < width: |
|
#lexeme = random.randint(2, 20) |
|
lexeme = int(random.expovariate(0.3)) |
|
colour = random.choice(colours) |
|
strokeRectangle = (x, y, x+lexeme, y) |
|
dr.rectangle(strokeRectangle, fill=colour) |
|
x += lexeme + 3 |
|
|
|
def drawGuide(dr): |
|
for y in range(0,height, 2): |
|
x = 0 |
|
while x < width: |
|
lexeme = int(random.expovariate(0.3)) |
|
colour = (0x30, 0x30, 0x30) |
|
strokeRectangle = (x, y, x+lexeme, y) |
|
dr.rectangle(strokeRectangle, fill=colour) |
|
x += lexeme + 3 |
|
|
|
def drawLogo(): |
|
# Ensure same image each time |
|
random.seed(1) |
|
|
|
# Georgia bold italic |
|
font = ImageFont.truetype(font="georgiaz.ttf", size=190) |
|
|
|
imageMask = Image.new("L", (width, height), color=(0xff)) |
|
drMask = ImageDraw.Draw(imageMask) |
|
drMask.text((30, -29), "Lexilla", font=font, fill=(0)) |
|
|
|
imageBack = Image.new("RGB", (width, height), color=(0,0,0)) |
|
drBack = ImageDraw.Draw(imageBack) |
|
drawGuide(drBack) |
|
|
|
imageLines = Image.new("RGB", (width, height), color=(0,0,0)) |
|
dr = ImageDraw.Draw(imageLines) |
|
drawLines(dr) |
|
|
|
imageOut = Image.composite(imageBack, imageLines, imageMask) |
|
|
|
imageOut.save("../doc/LexillaLogo.png", "png") |
|
|
|
imageDoubled = imageOut.resize((width*2, height * 2), Image.NEAREST) |
|
|
|
imageDoubled.save("../doc/LexillaLogo2x.png", "png") |
|
|
|
drawLogo()
|
|
|