Advertisement
here2share

# even_odd_zoom.py

Jun 11th, 2025 (edited)
1,093
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.27 KB | None | 0 0
  1. # even_odd_zoom.py
  2.  
  3. import tkinter as tk
  4. from PIL import Image, ImageTk, ImageFilter
  5.  
  6. WW, HH = 640, 640
  7. CX, CY = WW // 2, HH // 2
  8.  
  9. root = tk.Tk()
  10. root.title("# even_odd_zoom.py")
  11. canvas = tk.Canvas(root, width=WW, height=HH)
  12. root.geometry("+10+10")
  13. canvas.pack()
  14.  
  15. grid_colors = {
  16.     (0, 0): (255, 255, 255), (0, 1): (255, 255, 0), (0, 2): (0, 255, 0),
  17.     (1, 0): (255, 165, 0), (1, 1): (128, 128, 128), (1, 2): (0, 0, 255),
  18.     (2, 0): (255, 0, 0), (2, 1): (128, 0, 128), (2, 2): (0, 0, 0)
  19. }
  20.  
  21. small_img = Image.new('RGB', (3, 3))
  22. for y in range(3):
  23.     for x in range(3):
  24.         small_img.putpixel((x, y), grid_colors[(x, y)])
  25.  
  26. img = small_img.resize((WW, HH), Image.LANCZOS)
  27. static_img = img.copy()
  28.  
  29. def plus_one_modulo():
  30.     new_img = img.point(lambda p: min(255, p + 4) if p % 2 == 0 else max(0, p - 4))
  31.     return new_img
  32.  
  33. scale = 10
  34. def update_frame():
  35.     global img, photo
  36.     img = img.crop((scale, scale, WW - scale, HH - scale))
  37.     img = img.resize((WW, HH), Image.LANCZOS)
  38.     img = plus_one_modulo()
  39.     photo = ImageTk.PhotoImage(img)
  40.     canvas.delete('all')
  41.     canvas.create_image(0, 0, image=photo, anchor=tk.NW)
  42.     root.after(1, update_frame)
  43.  
  44. photo = ImageTk.PhotoImage(img)
  45. canvas.create_image(0, 0, image=photo, anchor=tk.NW)
  46. root.after(1, update_frame)
  47. root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement