Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # tk_4_canvas_masks.py
- import tkinter as tk
- from PIL import Image, ImageTk, ImageDraw
- WW, HH = 640, 640
- WW2, HH2 = WW*2, HH*2
- LINE_SPACING = 2
- root = tk.Tk()
- canvas = tk.Canvas(root, width=WW-1, height=HH-1, bg='black')
- canvas.pack()
- img1 = Image.new("RGBA", (WW2, HH2), (255, 0, 0, 255))
- img2 = Image.new("RGBA", (WW2, HH2), (0, 255, 0, 255))
- img3 = Image.new("RGBA", (WW2, HH2), (0, 0, 255, 255))
- img4 = Image.new("RGBA", (WW2, HH2), (255, 255, 0, 255))
- tile_size = 32
- tile = Image.new("L", (tile_size, tile_size), 255)
- draw_tile = ImageDraw.Draw(tile)
- for x in range(0, tile_size, LINE_SPACING):
- draw_tile.line((x, 0, x, tile_size), fill=0)
- for y in range(0, tile_size, LINE_SPACING):
- draw_tile.line((0, y, tile_size, y), fill=0)
- mask = Image.new("L", (WW2, HH2), 255)
- for y in range(0, HH2+tile_size, tile_size):
- for x in range(0, WW2+tile_size, tile_size):
- mask.paste(tile, (x, y))
- combined = Image.new("RGBA", (WW2, HH2))
- combined.paste(img1, (0, 0), mask)
- combined.paste(img2, (1, 0), mask)
- combined.paste(img3, (0, 1), mask)
- combined.paste(img4, (1, 1), mask)
- crop_region = (64, 64, 128, 128)
- cropped = combined.crop(crop_region)
- resized = cropped.resize((WW, HH), resample=Image.NEAREST)
- tk_img = ImageTk.PhotoImage(resized)
- canvas.create_image(1, 1, image=tk_img, anchor='nw')
- root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment