here2share

# tk_4_canvas_masks.py

Sep 15th, 2025 (edited)
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.34 KB | None | 0 0
  1. # tk_4_canvas_masks.py
  2.  
  3. import tkinter as tk
  4. from PIL import Image, ImageTk, ImageDraw
  5.  
  6. WW, HH = 640, 640
  7. WW2, HH2 = WW*2, HH*2
  8. LINE_SPACING = 2
  9.  
  10. root = tk.Tk()
  11. canvas = tk.Canvas(root, width=WW-1, height=HH-1, bg='black')
  12. canvas.pack()
  13.  
  14. img1 = Image.new("RGBA", (WW2, HH2), (255, 0, 0, 255))
  15. img2 = Image.new("RGBA", (WW2, HH2), (0, 255, 0, 255))
  16. img3 = Image.new("RGBA", (WW2, HH2), (0, 0, 255, 255))
  17. img4 = Image.new("RGBA", (WW2, HH2), (255, 255, 0, 255))
  18.  
  19. tile_size = 32
  20. tile = Image.new("L", (tile_size, tile_size), 255)
  21. draw_tile = ImageDraw.Draw(tile)
  22. for x in range(0, tile_size, LINE_SPACING):
  23.     draw_tile.line((x, 0, x, tile_size), fill=0)
  24. for y in range(0, tile_size, LINE_SPACING):
  25.     draw_tile.line((0, y, tile_size, y), fill=0)
  26.  
  27. mask = Image.new("L", (WW2, HH2), 255)
  28. for y in range(0, HH2+tile_size, tile_size):
  29.     for x in range(0, WW2+tile_size, tile_size):
  30.         mask.paste(tile, (x, y))
  31.  
  32. combined = Image.new("RGBA", (WW2, HH2))
  33. combined.paste(img1, (0, 0), mask)
  34. combined.paste(img2, (1, 0), mask)
  35. combined.paste(img3, (0, 1), mask)
  36. combined.paste(img4, (1, 1), mask)
  37.  
  38. crop_region = (64, 64, 128, 128)
  39. cropped = combined.crop(crop_region)
  40. resized = cropped.resize((WW, HH), resample=Image.NEAREST)
  41.  
  42. tk_img = ImageTk.PhotoImage(resized)
  43. canvas.create_image(1, 1, image=tk_img, anchor='nw')
  44.  
  45. root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment