Skip to content

Instantly share code, notes, and snippets.

@heartleth
Last active December 11, 2021 14:50
Show Gist options
  • Save heartleth/09eda06e9415b464388ec0e0fb71a0f0 to your computer and use it in GitHub Desktop.
Save heartleth/09eda06e9415b464388ec0e0fb71a0f0 to your computer and use it in GitHub Desktop.
프린터기
from PIL import Image
import pyautogui as pag
import keyboard
import numpy as np
import time
width = 100
bigimg = Image.open('<YOUR FILE>.jpg')
img = bigimg.resize((width, int((bigimg.size[1]/bigimg.size[0]) * width)))
time.sleep(2)
x0 = pag.mouseinfo.position()[0]
y0 = pag.mouseinfo.position()[1]
ispng = False
def getBrightLevel(colour):
if ispng:
x = int((colour[3] * ((0.21 * colour[0]) + (0.72 * colour[1]) + (0.07 * colour[2]))) // 40)
return 5 if x > 5 else x
else:
x = int(((0.21 * colour[0]) + (0.72 * colour[1]) + (0.07 * colour[2])) // 40)
return 5 if x > 5 else x
strokesarr = []
for y in range(img.size[1]):
stack = []
drawarr = []
prevDarkness = 0
for x in range(img.size[0]):
currentDarkness = 5 - getBrightLevel(img.getpixel((x, y)))
if currentDarkness > 0:
if prevDarkness == 0:
stack.append((x, currentDarkness))
elif currentDarkness < prevDarkness:
while currentDarkness < stack[-1][1]:
(start, op) = stack.pop()
if len(stack) == 0 or stack[-1][1] < currentDarkness:
al = op - currentDarkness
stack.append((x, currentDarkness))
drawarr.append((start, x - 1, al))
else:
al = op - stack[-1][1]
drawarr.append((start, x - 1, al))
elif currentDarkness > prevDarkness:
stack.append((x, currentDarkness))
prevDarkness = currentDarkness
else:
while len(stack) > 0:
(start, op) = stack.pop()
if len(stack) == 0:
drawarr.append((start, x - 1, op))
else:
al = op - stack[-1][1]
drawarr.append((start, x - 1, al))
prevDarkness = 0
strokesarr.append(drawarr)
strokes = np.array(strokesarr, dtype=object)
pc = -1
for y in range(img.size[1]):
for start, end, colour in strokes[y]:
if pc != int(colour):
keyboard.press(str(6 - int(colour)))
pc = int(colour)
pag.moveTo(x0 + start * 5, y0 + y * 5)
if end == start:
pag.click()
else:
pag.drag((end - start) * 5, 0)
if keyboard.is_pressed('esc'):
break
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment