-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathdoodling.py
113 lines (80 loc) · 3.33 KB
/
doodling.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#!/usr/bin/env python
# coding: utf-8
# In[1]:
from tkinter import *
from tkinter.colorchooser import askcolor
from PIL import ImageGrab, ImageOps
import PIL.Image
import numpy as np
class Paint(object):
DEFAULT_PEN_SIZE = 10.0
DEFAULT_COLOR = 'black'
def __init__(self):
self.root = Tk()
self.width = 900
self.height = 640
self.pen_button = Button(self.root, text='pen', command=self.use_pen)
self.pen_button.grid(row=0, column=0)
self.save_button = Button(self.root, text='save', command=self.save_and_quit)
self.save_button.grid(row=0, column=1)
self.color_button = Button(self.root, text='color', command=self.choose_color)
self.color_button.grid(row=0, column=2)
self.eraser_button = Button(self.root, text='eraser', command=self.use_eraser)
self.eraser_button.grid(row=0, column=3)
self.choose_size_button = Scale(self.root, from_=1, to=10, orient=HORIZONTAL)
self.choose_size_button.grid(row=0, column=4)
self.c = Canvas(self.root, bg='white', width=self.width, height=self.height)
self.c.grid(row=1, columnspan=6)
self.setup()
self.root.mainloop()
def setup(self):
self.old_x = None
self.old_y = None
self.line_width = self.choose_size_button.get()
self.color = self.DEFAULT_COLOR
self.eraser_on = False
self.active_button = self.pen_button
self.c.bind('<B1-Motion>', self.paint)
self.c.bind('<ButtonRelease-1>', self.reset)
def saveas(self):
x=np.random.randn()
filename="image"+str(x)
#savename = 'im_{0:0>6}'.format(i)
ImageGrab.grab(()).save("Z:style/style_transfer/media/"+filename + '.jpg')
fp = open("Z:style/style_transfer/media/"+filename+".jpg","rb")
img = PIL.Image.open(fp)
border = (250, 250, 200, 10)
fname= "img"+str(x)# left, up, right, bottom
ImageOps.crop(img, border).save("Z:style/style_transfer/media/" +fname+".jpg")
#self.save('Z:/style/abced.jpg', 'JPEG')
def save_and_quit(self):
self.activate_button(self.save_button)
self.saveas()
#show_entry_fields()
quit()
def use_pen(self):
self.activate_button(self.pen_button)
def choose_color(self):
self.eraser_on = False
self.color = askcolor(color=self.color)[1]
def use_eraser(self):
self.activate_button(self.eraser_button, eraser_mode=True)
def activate_button(self, some_button, eraser_mode=False):
self.active_button.config(relief=RAISED)
some_button.config(relief=SUNKEN)
self.active_button = some_button
self.eraser_on = eraser_mode
def paint(self, event):
self.line_width = self.choose_size_button.get()
paint_color = 'white' if self.eraser_on else self.color
if self.old_x and self.old_y:
self.c.create_line(self.old_x, self.old_y, event.x, event.y,
width=self.line_width, fill=paint_color,
capstyle=ROUND, smooth=TRUE, splinesteps=36)
self.old_x = event.x
self.old_y = event.y
def reset(self, event):
self.old_x, self.old_y = None, None
if __name__ == '__main__':
Paint()
# In[ ]: