Advertisement
Guest User

Untitled

a guest
Apr 5th, 2020
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.38 KB | None | 0 0
  1. import pyautogui
  2. import numpy as np
  3. import time
  4. from PIL import Image
  5.  
  6. # координаты элементов
  7. chng_color_pos = (1128, 83)
  8. chng_color_ok_pos = (491, 508)
  9. coord_field = (6, 145)
  10. red_pos = (885, 438)
  11. green_pos = (885, 461)
  12. blue_pos = (885, 485)
  13. color_inputs = red_pos, green_pos, blue_pos
  14.  
  15. white_color = [255, 255, 255]
  16.  
  17. # открытие и уменьшение изображения
  18. im = Image.open("./image.bmp")
  19. w, h = pyautogui.size()
  20. im_w, im_h = im.size
  21. im = im.resize((int(im_w / (im_h / 50)), 50), Image.CUBIC)
  22.  
  23. # разложение изображения на пиксели и расчет их координат
  24. im_w, im_h = im.size
  25. pixels = []
  26. for i, pixel in enumerate(im.getdata()):
  27.     y, x = i // im_w, i % im_w
  28.     pixels.append([x, y, *pixel])
  29.  
  30.  
  31. # преобразование цветов
  32. def color_transform(pixels: list):
  33.     for i, pixel in enumerate(pixels):
  34.         # округляем до 10
  35.         pixels[i] = pixel[:2] + list(map(lambda x: x - (x % 10), pixel[2:]))
  36.     return pixels
  37.  
  38.  
  39. # сортировка цветов
  40. def sort_pixels(pixels: list):
  41.     return sorted(pixels, key=lambda x: x[2:], reverse=False)
  42.  
  43.  
  44. time.sleep(2)
  45.  
  46. min_time_for_sleep = 1000
  47.  
  48.  
  49. def draw(pixels):
  50.     time_for_sleep = min_time_for_sleep
  51.     number_of_last_color = 0
  52.     last_color = None
  53.     for pixel in pixels:
  54.         x, y, *color = pixel
  55.         if color != white_color:
  56.             number_of_last_color += 1
  57.             if color != last_color:
  58.                 number_of_last_color = 0
  59.                 last_color = color
  60.                 time_for_sleep += 50
  61.                 pyautogui.leftClick(*chng_color_pos, )
  62.                 for color, coord in zip(color, color_inputs):
  63.                     pyautogui.leftClick(*coord, _pause=False)
  64.                     pyautogui.press('del', 3, _pause=False)
  65.                     pyautogui.write(str(color), _pause=False)
  66.                 pyautogui.leftClick(*chng_color_ok_pos, _pause=False)
  67.             pyautogui.leftClick(coord_field[0] + x + (x * 7),
  68.                                 coord_field[1] + y + (y * 7),
  69.                                 _pause=False)
  70.  
  71.             if color == last_color and time_for_sleep > min_time_for_sleep:
  72.                 time_for_sleep -= number_of_last_color / 10
  73.  
  74.             time.sleep(1 / time_for_sleep)
  75.  
  76.  
  77. draw(sort_pixels(color_transform(pixels)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement