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.
76 lines
1.7 KiB
76 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()
|