RosettaCodeData/Task/Image-noise/Python/image-noise.py

54 lines
1.4 KiB
Python

import time
import random
import Tkinter
import Image, ImageTk # PIL libray
class App(object):
def __init__(self, size, root):
self.root = root
self.root.title("Image Noise Test")
self.img = Image.new("RGB", size)
self.label = Tkinter.Label(root)
self.label.pack()
self.time = 0.0
self.frames = 0
self.size = size
self.loop()
def loop(self):
self.ta = time.time()
# 13 FPS boost. half integer idea from C#.
rnd = random.random
white = (255, 255, 255)
black = (0, 0, 0)
npixels = self.size[0] * self.size[1]
data = [white if rnd() > 0.5 else black for i in xrange(npixels)]
self.img.putdata(data)
self.pimg = ImageTk.PhotoImage(self.img)
self.label["image"] = self.pimg
self.tb = time.time()
self.time += (self.tb - self.ta)
self.frames += 1
if self.frames == 30:
try:
self.fps = self.frames / self.time
except:
self.fps = "INSTANT"
print ("%d frames in %3.2f seconds (%s FPS)" %
(self.frames, self.time, self.fps))
self.time = 0
self.frames = 0
self.root.after(1, self.loop)
def main():
root = Tkinter.Tk()
app = App((320, 240), root)
root.mainloop()
main()