# HG changeset patch # User Laman # Date 2018-12-15 09:19:02 # Node ID 9df0d1a019c5c96cf56425f4f19a9844a2e50772 # Parent 2b850618ba883a80fca62879dfc0110ec79b670f color sampler diff --git a/exp/color_sampler.py b/exp/color_sampler.py new file mode 100644 --- /dev/null +++ b/exp/color_sampler.py @@ -0,0 +1,58 @@ +import os +import tkinter as tk +from colorsys import rgb_to_hsv + +from PIL import Image,ImageTk + + +class Sampler: + def __init__(self): + self.dirname="../images" + self.filenames=[f for f in os.listdir(self.dirname) if f.endswith(".jpg")] + self.k=0 + + self.img=None + self.photo=None + + self.letter="_" + + def sample(self,e): + (r,g,b)=(x/255 for x in self.img.getpixel((e.x,e.y))) + (h,s,v)=map(lambda x: round(x,3), rgb_to_hsv(r,g,b)) + print("\t".join(map(str, (self.filenames[self.k],e.x,e.y,self.letter,h,s,v)))) + + def showImage(self): + self.img=Image.open(os.path.join(self.dirname,self.filenames[self.k])) + (w,h)=self.img.size + self.photo=ImageTk.PhotoImage(self.img) + self.canvas.create_image(0,0,image=self.photo,anchor="nw") + self.canvas.configure(width=w,height=h) + + def switchImage(self,step): + n=len(self.filenames) + self.k=(self.k+step+n)%n + self.showImage() + + def setLetter(self,c): + self.letter=c + + def createGUI(self): + root=tk.Tk() + frame=tk.Frame(root) + frame.pack() + self.canvas=tk.Canvas(frame) + self.canvas.pack() + self.showImage() + + self.canvas.bind('<1>',self.sample) + root.bind("",lambda e: self.switchImage(-1)) + root.bind("",lambda e: self.switchImage(1)) + root.bind("",lambda e: self.setLetter("b")) + root.bind("",lambda e: self.setLetter("e")) + root.bind("",lambda e: self.setLetter("w")) + + root.mainloop() + + +s=Sampler() +s.createGUI()