GMU:Bots 'n' Plots/Apasri Titatarn: Difference between revisions

From Medien Wiki
No edit summary
No edit summary
Line 65: Line 65:


</pre>
</pre>
TwitterBot :MID TERM ASSIGNMENT
======Kaleidoscope Bot=======
code for the image processing
=============================
from PIL import Image, ImageDraw,ImageFilter
import PIL.ImageOps as im
import numpy as np
def makekaleido():
#put image path
    imgfile = "img.jpg"
#load Image
    source = Image.open(imgfile)
#adjust the source image a bit for nicer result
    base = source.rotate(31)
#creat mask base the same size with source image
    mask = Image.new('RGBA', base.size, (255,255,255,0))
    x, y = base.size
# one variable to vary the size of triangle
    var = y/14
# Define triangle mask position (triangle with 20 degree)
    (originx,originy) = (x/3,int(0.9*y))
    trih = int(12*var)  #fix formular for triangle height
    triw = int(4.2*var) #fix formular for triangle width
    polygonpos = [(originx,originy),
    (originx+triw,originy),
    (originx+triw/2,originy-trih)]
#print(trih,triw)
# Create mask
    draw = ImageDraw.Draw(mask,'RGBA')
    draw.polygon(polygonpos,(0,0,0,255))
    del draw
    mask.save("mask.png")
# Get the Alpha band from the template
    tmplt = Image.open('mask.png')
    A = tmplt.split()[3]
#make one piece of triangle on transparent bg
    [R,G,B]=base.split()
    tri = Image.merge('RGBA', (R, G, B, A))
#crop it to the exact size of triangle!! to create primary pattern
#box (left, top , right, buttom)
    box =(originx,(originy-trih),(originx+triw),originy)
    pattern_plain=tri.crop(box)
    pattern_plain.save('pattern_plain.png')
    print('....pattern created....')
# add style to pattern
    pattern = pattern_plain
#pattern= pattern_plain.filter(ImageFilter.EDGE_ENHANCE)
    pattern.save('pattern_tri.png')
    print('....stylized pattern....')
#make square canvas for the output (wide = double size of height of primary pattern)
    canvas =Image.new('RGBA',(2*trih,2*trih), (255,255,255,0))
    canvas.save('tmpcanvas.png')
    pcanvas=Image.new('RGBA',(2*trih,2*trih), (255,255,255,0))
#put pattern on the canvas
#make sure to put the tip of the triangle at the center of the canvas
#because when we rotate the center of the object is the pivot point
#note: paste command require the coordinate of top left corner
#so point to paste the pattern is . . .
    ccenterx = int(trih-triw/2)
    canvas.paste(pattern,(ccenterx,trih))
# start rotate the pattern around every 40 degree
    for i in range (0,360,40):
        tmpcanvas = canvas
        tmppat = canvas.rotate(i)
        canvas= Image.alpha_composite(tmpcanvas,tmppat)
# now we get half of the things
    half = canvas
#mirror the half and put in the space to create simple kaleidoscpoe effect
    mirror = im.mirror(half)
    half2= mirror.rotate(20)
#merge 2 half
    output=Image.alpha_composite(half,half2)
    output.save("final.png")
if __name__ == '__main__':
    makekaleido()

Revision as of 17:35, 16 June 2015

cloud my sheep robot. . . Sheep.png

Homework 2nd week

CloudBot

Cloud bot s.gif


Code----

#cloud
width = 400
posx = [width/4,width/3,3*width/5,width/2,width/5,2*width/3,3.8*width/5,width/2.3]

def setup():
    size(400,400)
    background(255)
    frameRate(12)
   
    
    
def draw():
    noStroke()
    background(179,226,228)
    change= sin(frameCount*0.1)
    drawcloud(change)
    sx= width/2
    n = frameCount
    textsnow(posx,change)
  
    saveFrame("cloudbot##.jpg")

    

    
def drawcloud(change):
    print change
    fluffy = change*5
    fill(255)
    #cloud 1 S
    ellipse(1.25*width/5,0.9*height/1.8,80+fluffy,80+fluffy)
    #cloud 2 M
    ellipse(2*width/5,height/1.8-height/10,130+2*fluffy,120+1.5*fluffy)
    #cloud 3 L
    ellipse(2.7*width/5,0.95*height/1.8-height/10,120+fluffy,145+fluffy)
    #cloud 4 M
    ellipse(3.5*width/5,height/1.8-height/10,110+2.5*fluffy,110+2*fluffy)
    
    #face
    fill(80)
    ellipse(width/3,height/2,7,7)
    ellipse(2*width/3,height/2,7,7)
    
   
    
def textsnow(posx,change):
    fill(255)
    textSize(32)
    i=0
    while i <7:
        text("*",posx[i]+change*i,height/1.8+frameCount*(i+1)/5)
        i =i+1



TwitterBot :MID TERM ASSIGNMENT

Kaleidoscope Bot=

code for the image processing

=================

from PIL import Image, ImageDraw,ImageFilter import PIL.ImageOps as im import numpy as np

def makekaleido():

  1. put image path
   imgfile = "img.jpg"
  1. load Image
   source = Image.open(imgfile)
  1. adjust the source image a bit for nicer result
   base = source.rotate(31)


  1. creat mask base the same size with source image
   mask = Image.new('RGBA', base.size, (255,255,255,0))
   x, y = base.size
  1. one variable to vary the size of triangle
   var = y/14 
  1. Define triangle mask position (triangle with 20 degree)
   (originx,originy) = (x/3,int(0.9*y))
   trih = int(12*var)  #fix formular for triangle height
   triw = int(4.2*var) #fix formular for triangle width
   polygonpos = [(originx,originy),
   (originx+triw,originy), 
   (originx+triw/2,originy-trih)]
  1. print(trih,triw)


  1. Create mask
   draw = ImageDraw.Draw(mask,'RGBA')
   draw.polygon(polygonpos,(0,0,0,255))
   del draw
   mask.save("mask.png")
  1. Get the Alpha band from the template
   tmplt = Image.open('mask.png')
   A = tmplt.split()[3]


  1. make one piece of triangle on transparent bg
   [R,G,B]=base.split()
   tri = Image.merge('RGBA', (R, G, B, A))
  1. crop it to the exact size of triangle!! to create primary pattern
  2. box (left, top , right, buttom)
   box =(originx,(originy-trih),(originx+triw),originy)
   pattern_plain=tri.crop(box)
   pattern_plain.save('pattern_plain.png')
   print('....pattern created....')


  1. add style to pattern
   pattern = pattern_plain
  1. pattern= pattern_plain.filter(ImageFilter.EDGE_ENHANCE)
   pattern.save('pattern_tri.png')
   print('....stylized pattern....')


  1. make square canvas for the output (wide = double size of height of primary pattern)
   canvas =Image.new('RGBA',(2*trih,2*trih), (255,255,255,0))
   canvas.save('tmpcanvas.png')
   pcanvas=Image.new('RGBA',(2*trih,2*trih), (255,255,255,0))



  1. put pattern on the canvas
  2. make sure to put the tip of the triangle at the center of the canvas
  3. because when we rotate the center of the object is the pivot point
  4. note: paste command require the coordinate of top left corner
  5. so point to paste the pattern is . . .
   ccenterx = int(trih-triw/2) 
   canvas.paste(pattern,(ccenterx,trih))


  1. start rotate the pattern around every 40 degree
   for i in range (0,360,40):
       tmpcanvas = canvas
       tmppat = canvas.rotate(i)
       canvas= Image.alpha_composite(tmpcanvas,tmppat)
  1. now we get half of the things
   half = canvas
  1. mirror the half and put in the space to create simple kaleidoscpoe effect
   mirror = im.mirror(half)
   half2= mirror.rotate(20)


  1. merge 2 half
   output=Image.alpha_composite(half,half2)


   output.save("final.png")

if __name__ == '__main__':

   makekaleido()