2016-12-05 8 views
1

Недавно я начал работать с PIL вместе с AutoPy для автоматизации некоторых задач. Одна из основных функций AutoPy необходима для его невероятно быстрой (хотя и багги, но для этого есть fixes - сборка и установка из исходного кода может быть раздражающей, и если вы получите ошибку Unable to find vcvarsall.bat, просто перейдите в Google).Преобразование изображения PIL в растровое изображение автопилота (и обратно)

Но сейчас я столкнулся с проблемой, я не могу найти решение. PIL и AutoPy используют принципиально разные форматы для своих скриншотов. Для AutoPy я не мог заставить его работать с несколькими экранами, но для PIL я легко мог. Теперь мне нужно преобразовать эти изображения в формат, который принимает AutoPy - и это в разумные сроки.

theoratically Возможное решение:

def test(): Img = Image.open("example.png") Img.save("test.png") Img2.open("test.png")

Идя моего тестирования, это занимает примерно около 0,5 секунд. Намного больше, чем 0,1 секунды.

+0

Вы когда-нибудь находили решение? У меня точно такая же проблема! Если вы нашли решение, я надеюсь, что у вас есть время поделиться им :-) – Vingtoft

ответ

0

Я выкопал документацию, чтобы найти инструмент преобразования растровых изображений.

pil_im = Image.open("test.png") 
pil_im = pil_im.convert(mode ="1") 
#this is to prevent a value error in the tobitmap function 

pil_im = pil_im.tobitmap(im) 

У меня была аналогичная проблема раньше, где скриншот pyautogui не считается такой же, как недавно открывшийся PNG. Команда pil_im.copy() создала образ для сравнения без форматирования.

+0

Большое спасибо, не совсем то, что мне нужно, и вы тоже немного опоздали, я в конечном итоге обошел проблему, просто изменив как изображение, выводимое функцией capture_screen, обрезается в источнике. Но я уже знаю, что это будет полезно в будущем. – JeWe37