Guest User

Untitled

a guest
Nov 4th, 2026
17
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.72 KB | None | 0 0
  1. from PIL import Image, ImageDraw
  2. #stars
  3. import random
  4. star_list = []
  5. def generate_star_list(nstars, sky_width, sky_height):
  6. star_list = []
  7. for i in range(nstars):
  8. x = random.randint(0, sky_width)
  9. y = random.randint(0, sky_height)
  10. star_list.append((x,y))
  11. return star_list
  12. star_list = generate_star_list(80, 350, 230)
  13.  
  14. def crop_image(img):
  15. img2 = img.copy()
  16. color_with_alpha = (0,0,0,0)
  17. for x in range(img2.width):
  18. for y in range(img2.height):
  19. r, g, b, a = img.getpixel((x, y))
  20. if r == 0 and g == 0 and b == 0:
  21. img2.putpixel((x,y), color_with_alpha)
  22. return img2
  23.  
  24. # TODO: replace width, height, and bgcolor with correct values
  25. img = Image.new('RGBA', (350, 300), (3, 20, 41))
  26.  
  27.  
  28. # TODO: create instance of ImageDraw object
  29. draw = ImageDraw.Draw(img)
  30.  
  31. #stars
  32. n = 0
  33. for i in range(len(star_list)):
  34. draw.circle((star_list[n]), 1, fill = (245, 244, 229))
  35. n += 1
  36.  
  37. #house
  38. draw.rectangle((50,170,149,229), "firebrick")
  39.  
  40. #grasslines
  41. for i in range (0, 350):
  42. if i % 2 == 0:
  43. draw.line((i, 230, i, 226), fill = (16,94,12), width = 1)
  44.  
  45. #moon
  46. draw.circle((275, 75), 30, fill = (247, 234, 206))
  47.  
  48. #grass
  49. draw.rectangle((0,230,349,300), "green")
  50.  
  51. #brick bg
  52. draw.rectangle((90, 230, 109, 300), (75, 75, 75))
  53.  
  54. # darkbricks
  55. y1 = 214
  56. y2 = 221
  57. for i in range(0, 8):
  58. y1 += 16
  59. y2 += 16
  60. draw.rectangle((90, y1, 93, y2), (50, 50, 50))
  61. draw.rectangle((98, y1, 101, y2), (50, 50, 50))
  62. draw.rectangle((106, y1, 109, y2), (50, 50, 50))
  63. draw.rectangle((94, y1+8, 97, y2+8), (50, 50, 50))
  64. draw.rectangle((102, y1+8, 105, y2+8), (50, 50, 50))
  65.  
  66. #door
  67. draw.rectangle((90,190,109,229), "blue")
  68.  
  69. #roof
  70. draw.polygon((50,169,149,169,100,140), "blue")
  71.  
  72. #image copy
  73. with img.copy() as im:
  74. temp_img = im.copy()
  75.  
  76. #bird
  77. with Image.open("bird.png") as im:
  78. resized_bird_image = im.resize((50,50))
  79. cropped_bird_img = crop_image(resized_bird_image)
  80. Image.Image.alpha_composite(img, resized_bird_image, (0, 120))
  81.  
  82. #image copy
  83. with img.copy() as im:
  84. temp_img = im.copy()
  85.  
  86. #bird
  87. with Image.open("bird.png") as im:
  88. resized_bird_image = im.resize((50,50))
  89. cropped_bird_img = crop_image(resized_bird_image)
  90.  
  91. frames = []
  92. for i in range(0, 120):
  93. frames.append(Image.Image.alpha_composite(img, resized_bird_image, (0, i)))
  94.  
  95. # Make sure you keep img.show in this main block
  96. if __name__ == "__main__":
  97. img.show()
  98.  
  99.  
  100. # This will save the gif from the frames list
  101. # DO NOT MODIFY!
  102. if __name__ == "__main__":
  103. frames[0].save('house-scene.gif',
  104. save_all=True,
  105. append_images=frames[1:],
  106. disposal=2,
  107. fps=20,
  108. loop=0)
Advertisement
Add Comment
Please, Sign In to add comment