Place Holder Products Code
Bash MySQL
Notes Return of the Fed Login
Admin Control Panel Email Control Panel Product Control Panel Debug Info Beacon Create Snippet Tag Control Panel

Code

*More fully fledged applications can be found on the Products page. The Bash page is dedicated to fully commented oneliners, and a MySQL quick reference is available here.



				
#!/usr/bin/python ''' Will Bergen 2019 - Make some kind of vaguely dynamic background for some text -> png - Code is based on pillow examples, and where marked other web sources ''' from PIL import Image, ImageFont, ImageDraw, ImageFilter, ImageColor import random import scipy import numpy as np import sys # Colors sets derived from https://www.materialpalette.com/colors indigos = [ "#e8eaf6", "#9fa8da", "#7986cb", "#c5cae9", "#5c6bc0", "#3f51b5", "#3949ab", "#303f9f", "#283593", "#1a237e", "#8c9eff", "#536dfe", "#3d5afe", "#304ffe"] light_greens = [ "#f1f8e9", "#dcedc8", "#c5e1a5", "#aed581", "#9ccc65", "#8bc34a", "#7cb342", "#689f38", "#558b2f", "#33691e", "#ccff90", "#b2ff59", "#76ff03", "#64dd17" ] light_blues = [ "#e1f5fe", "#b3e5fc", "#81d4fa", "#4fc3f7", "#29b6f6", "#03a9f4", "#039be5", "#0288d1", "#0277bd", "#01579b", "#80d8ff", "#00b0ff", "#0091ea", "#40c4ff" ] ambers = [ "#fff8e1", "#ffecb3", "#ffe082", "#ffd54f", "#ffca28", "#ffc107", "#ffb300", "#ffa000", "#ff8f00", "#ff6f00", "#ffe57f", "#ffd740", "#ffc400", "#ffab00" ] reds = [ "#ffebee", "#ffcdd2", "#ef9a9a", "#e57373", "#ef5350", "#f44336", "#e53935", "#d32f2f", "#c62828", "#b71c1c", "#ff8a80", "#ff5252", "#ff1744", "#d50000" ] pinks = [ "#fce4ec", "#f8bbd0", "#f48fb1", "#f06292", "#ec407a", "#e91e63", "#d81b60", "#c2185b", "#ad1457", "#880e4f", "#ff80ab", "#ff4081", "#f50057", "#c51162" ] purples = [ "#f3e5f5", "#e1bee7", "#ce93d8", "#ba68c8", "#ab47bc", "#9c27b0", "#8e24aa", "#7b1fa2", "#6a1b9a", "#4a148c", "#ea80fc", "#e040fb", "#d500f9", "#aa00ff" ] deep_purples = [ "#ede7f6", "#d1c4e9", "#b39ddb", "#9575cd", "#7e57c2", "#673ab7", "#5e35b1", "#512da8", "#4527a0", "#311b92", "#b388ff", "#7c4dff", "#651fff", "#6200ea" ] blues = [ "#e3f2fd", "#bbdefb", "#90caf9", "#64b5f6", "#42a5f5", "#2196f3", "#1e88e5", "#1976d2", "#1565c0", "#0d47a1", "#82b1ff", "#448aff", "#2979ff", "#2962ff" ] cyans = [ "#e0f7fa", "#b2ebf2", "#80deea", "#4dd0e1", "#26c6da", "#00bcd4", "#00acc1", "#0097a7", "#00838f", "#006064", "#84ffff", "#18ffff", "#00e5ff", "#00b8d4" ] teals = [ "#e0f2f1", "#b2dfdb", "#80cbc4", "#4db6ac", "#26a69a", "#009688", "#00897b", "#00796b", "#00695c", "#004d40", "#a7ffeb", "#64ffda", "#1de9b6", "#00bfa5" ] greens = [ "#e8f5e9", "#c8e6c9", "#a5d6a7", "#81c784", "#66bb6a", "#4caf50", "#43a047", "#388e3c", "#2e7d32", "#1b5e20", "#b9f6ca", "#69f0ae", "#00e676", "#00c853" ] limes = [ "#f9fbe7", "#f0f4c3", "#e6ee9c", "#dce775", "#d4e157", "#cddc39", "#c0ca33", "#afb42b", "#9e9d24", "#827717", "#f4ff81", "#eeff41", "#c6ff00", "#aeea00" ] yellows = [ "#fffde7", "#fff9c4", "#fff59d", "#fff176", "#ffee58", "#ffeb3b", "#fdd835", "#fbc02d", "#f9a825", "#f57f17", "#ffff8d", "#ffff00", "#ffea00", "#ffd600" ] oranges = [ "#fff3e0", "#ffe0b2", "#ffcc80", "#ffb74d", "#ffa726", "#ff9800", "#fb8c00", "#f57c00", "#ef6c00", "#e65100", "#ffd180", "#ffab40", "#ff9100", "#ff6d00" ] deep_oranges = [ "#fbe9e7", "#ffccbc", "#ffab91", "#ff8a65", "#ff7043", "#ff5722", "#f4511e", "#e64a19", "#d84315", "#bf360c", "#ff9e80", "#ff6e40", "#ff3d00", "#dd2c00" ] browns = [ "#efebe9", "#d7ccc8", "#bcaaa4", "#a1887f", "#8d6e63", "#795548", "#6d4c41", "#5d4037", "#4e342e", "#3e2723" ] greys = [ "#fafafa", "#f5f5f5", "#eeeeee", "#e0e0e0", "#bdbdbd", "#9e9e9e", "#757575", "#616161", "#424242", "#212121" ] blue_greys = [ "#eceff1", "#cfd8dc", "#b0bec5", "#90a4ae", "#78909c", "#607d8b", "#546e7a", "#455a64", "#37474f", "#263238" ] palettes = [indigos, light_greens, light_blues, ambers, reds, pinks, purples, deep_purples, blues, cyans, teals, greens, limes, yellows, oranges, deep_oranges, browns, greys, blue_greys] # Commandline args: if len(sys.argv) != 4: print "Usage: ./py_art_dev <text> <mirror> <sqaure_scale>" print " - Try a few to get size right..." exit() text = sys.argv[1] # Text to draw mirror = int(sys.argv[2]) # Mirror left side on right (bool) sqaure_scale = int(sys.argv[3]) # Size of squares to base drawing on, -eq side length # Some fonts: dejavu_sans_bold = "/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf" # Some params: # text = "Friedrich Hayek" height = 600 width = 1200 canvas = (width, height) center = (width/2, height/2) font_size = 12 font_offset = 50 # the total padding around the text font_max_size = 300 font = ImageFont.truetype(dejavu_sans_bold, font_size) # use a truetype font, initialize for sizing # Make a new Image: image = Image.new('RGBA', canvas) draw = ImageDraw.Draw(image) # Determine maximum font size: while ((draw.textsize(text, font=font)[0] <= (width-font_offset)) and (font_size <= font_max_size)): font_size += 1; font = ImageFont.truetype(dejavu_sans_bold, font_size) # re-init font w/ incremented size # print font_size print "Using a font size of %i" % font_size t_w, t_h = draw.textsize(text, font=font) font_center = ((width-t_w)/2, (height - t_h)/2) # Get the pixels: pixels = image.load() # sqaure_scale = 100 mini_scale = 20 # Choose a two random color schemes to use: palette1 = random.choice(palettes) palette2 = random.choice(palettes) # Random element pools: rand_mod = [-1, 1] angles = [0,90,180,270] # mirror = True r_width = width if mirror: r_width = width/2 # Draw some squares with deco littler squares & slices... for i in range(0,r_width,sqaure_scale): for j in range(0,height,sqaure_scale): c1 = random.choice(palette1[4:]) draw.rectangle([(i, j), (i+sqaure_scale, j+sqaure_scale)], c1) for k in range(1,sqaure_scale, sqaure_scale/10): c2 = random.choice(palette2[4:]) mod1 = random.choice(rand_mod) mod2 = random.choice(rand_mod) mod3 = random.choice(rand_mod) a1 = random.choice(angles) draw.pieslice([(i,j), (i+sqaure_scale+(mod1*k), j+sqaure_scale+(mod1*k))], a1, (a1+90 % 360), c2) draw.rectangle([(i+sqaure_scale/2+(mod1*k), j+sqaure_scale/2+(mod2*k)), (i+sqaure_scale/2+(mod3*k)-mini_scale, j)], c2) # Mirror the above: if mirror: for i in range(0, width/2): for j in range(0,height): pixels[i+width/2,j] = pixels[width/2-i,j] # Stroke the text by drawing it offeset in all directions: shadowcolor = "black" stroke_size = 6 draw.text((font_center[0]-stroke_size, font_center[1]-stroke_size), text, font=font, fill=shadowcolor) draw.text((font_center[0]+stroke_size, font_center[1]-stroke_size), text, font=font, fill=shadowcolor) draw.text((font_center[0]-stroke_size, font_center[1]+stroke_size), text, font=font, fill=shadowcolor) draw.text((font_center[0]+stroke_size, font_center[1]+stroke_size), text, font=font, fill=shadowcolor) draw.text(font_center, text, font=font) # Resize to antialias: image = image.resize((width/2, height/2), Image.ANTIALIAS) # Save the image: fn = "%s_image.png" % text.replace(" ", "_") image.save(fn)