GMU:Bots 'n' Plots/Ashin Mandal: Difference between revisions

From Medien Wiki
No edit summary
No edit summary
Line 1: Line 1:
== Little Shitty Robot ==
== Little Box Robot - a Python Processing program to animate a ro(bot) ==
An experiment with Processing and Python to generate a simple looping animation.


[[File:Ashin_little_shitty_robot.png]]
The code:
 
== Little Shitty Robot Animated ==
[[File:Ashin_little_shitty_robot.gif]]
 
== Little Shitty Robot Code ==
<source lang="python">
<source lang="python">
"""
"""
Line 97: Line 93:
      
      
     saveFrame("Little_###.png")
     saveFrame("Little_###.png")
</source>
The result:
[[File:Ashin_little_shitty_robot.gif]]
== 8bitify - an image based twitter bot ==
8bitify is a twitter bot that takes the image and text that you tweet to him and turns it into an 8bit console cut scene.
The code for the filter:
<source lang="python">
"""
This module contains filter functions to modify images
"""
from PIL import Image, ImageDraw, ImageFont, ImageEnhance
def eightBitify(img, text):
    """ Create an 8 bit version of the image. """
   
    # Setting the pixelation range
    baseWidth=180
    peakWidth=500
   
    # Setting the text settings
    stringBreakPosition = 43
    textIndent = 30
    textStart = 305
    textColor = (255,255,255)
    textFont = ImageFont.truetype('pixel.ttf', 10)
   
    # Creating the 8 bit image
    contrast = ImageEnhance.Contrast(img)
    img = contrast.enhance(1.5)
    brightness = ImageEnhance.Brightness(img)
    img = brightness.enhance(1.5)
    img = resizeImage(img, baseWidth)
    img = resizeImage(img, peakWidth)
   
    # Cropping the image
    img = img.crop((0, 25, 500, 210))
   
    # Pasting the image in a new widescreen canvas
    newImg = Image.new("RGB", (500,375), "black")
    newImg.paste(img,(0, 95, 500, 280))
   
    # Adding text to the image
    draw = ImageDraw.Draw(newImg)
    for line in text.splitlines():
        lastPosition = 0
        for i in xrange(0, len(line), 43):
            breakPosition = i + 43
            if (breakPosition > len(text)):
                breakPosition = len(text)
            else:
                while(text[breakPosition - 1] != " "):
                    breakPosition -= 1
            draw.text((textIndent, textStart), line[lastPosition:breakPosition], textColor, font=textFont)
            lastPosition = breakPosition
            textStart += 10
           
    return newImg
def resizeImage(img, width):
    wpercent = (width/float(img.size[0]))
    height = int((float(img.size[1])*float(wpercent)))
    img = img.resize((width, height))
    return img
if __name__ == "__main__":
    # load a test image
    text = "I am trying to create a sentence or two which have 140 characters. Because I want to test it with my new twitter bot. I hope the bot is cool."
    img = Image.open("birdman.png")
    # blur the image
    img2 = eightBitify(img, text)
    img2.show()
</source>
</source>