python實現按鍵精靈找色點選功能教程,使用pywin32和Pillow庫
Python圖片處理模組PIL(pillow)
pywin32的主要作用
1.捕獲視窗;
2.模擬滑鼠鍵盤動作;
3.自動獲取某路徑下檔案列表;
4.PIL截圖功能
找色點選功能思路:
抓取當前螢幕快照,指定一個座標和顏色,如果座標的顏色符合,則點選座標.
1.抓取當前螢幕快照ImageGrab.grab()返回一個模式為“RGB”的影象.
2.方法im.load()返回一個用於讀取和修改畫素的畫素訪問物件
3.用pywin32操作滑鼠鍵盤
王者榮耀自動刷冒險模式原始碼送上:
由於解析度不同,要修改相應座標和顏色才能正常在自己電腦上執行
https://github.com/janyroo/pvpkey
import win32gui,win32api,win32con,time from win32api import GetSystemMetrics from PIL import ImageGrab def PilImage(x,y): a,b = GetSystemMetrics(0),GetSystemMetrics(1) # Python獲取螢幕解析度 im = ImageGrab.grab((0,a,b))#與座標不同,這裡0,0,1,1是一個畫素,而座標是從0~1919的 pix = im.load() return pix[x,y] def DisplaySize(): return GetSystemMetrics(0),GetSystemMetrics(1) # Python獲取螢幕解析度 def LeftClick(x,y): # 滑鼠左鍵點選螢幕上的座標(x,y) win32api.SetCursorPos((x,y)) # 滑鼠定位到座標(x,y) # 注意:不同的螢幕解析度會影響到滑鼠的定位,有需求的請用百分比換算 win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0) # 滑鼠左鍵按下 win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,0) # 滑鼠左鍵彈起 # win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN + win32con.MOUSEEVENTF_LEFTUP,0) # 測試 def PressOnce(x): # 模擬鍵盤輸入一個按鍵的值,鍵碼: x win32api.keybd_event(x,0) ''' # 測試 a,b = DisplaySize() print(a,b) LeftClick(30,30) # 點選 PressOnce(13) # Enter PressOnce(9) # TAB print(PilImage(80,546)) ''' # SetCursorPos','No error message is available' 用管理員身份執行pycharm if __name__=="__main__": jisu=0 ltime=0 ntime=0 time.sleep(5) print(PilImage(875,573)) print(PilImage(908,323)) print(PilImage(1050,635)) print(PilImage(914,486)) while 1: if PilImage(875,573)==(220,154,39): LeftClick(875,573) jisu += 1 ntime = time.time()-ltime ltime = time.time() print("刷了第%d次,獲得%d經驗,用時%d秒" % (jisu,jisu*82,ntime)) elif PilImage(908,323)==(26,35,101): LeftClick(908,323) elif PilImage(1050,635)==(216,125,26): LeftClick(1050,635) elif PilImage(1061,138)==(48,131,205): LeftClick(1061,145) elif PilImage(1061,138)==(46,197): LeftClick(1061,145) elif PilImage(914,486)==(196,39,80): LeftClick(914,486) else: pass time.sleep(5)
補充知識:python批量將資料夾下所有圖片中一種顏色改變為隨機顏色
說在前面
需求:有時需要將圖片中的一種顏色更改為另一種顏色,ps可以幫助我們完成這項任務,但是如果存在若干張圖片,ps就不能滿足我們的需要,則需要用python幫助我們快速解決。
原始碼
# -*- coding: utf-8 -*- """ Created on Sun Aug 26 20:03:10 2018 @author: Administrator """ from PIL import Image import random for n in range(1,4):#資料夾下圖片數量 i = 1 j = 1 img = Image.open("C:/Users/Administrator/Desktop/aa/"+str(n)+".png")#讀取圖片 img = img.convert("RGB") width = img.size[0]#長度 height = img.size[1]#寬度 for i in range(0,width):#遍歷所有長度的點 for j in range(0,height):#遍歷所有寬度的點 data = img.getpixel((i,j))#i,j表示畫素點 if (data[0]==255 and data[1]==255 and data[2]==255): m = random.randint(160,190)#取160-190的顏色隨機值 print("m=",m) img.putpixel((i,j),(m,m,m))#顏色改變 img = img.convert("L")#把圖片轉成灰度圖 img.save("C:/Users/Administrator/Desktop/aa/"+str(n)+".png")#儲存修改畫素點後的圖片
錯誤注意
這裡需要圖片是RGB模式的,不能是L灰度影象,不然會出現如下錯誤:
TypeError: 'int' object is not subscriptable
https://stackoverflow.com/questions/8220702/error-int-object-is-not-subscriptable解釋了這個問題,但是主要原因可能在於圖片是灰度影象,那麼data資料為空,不能提取到RGB顏色值,程式報錯。
隨機顏色
m = random.randint(160,190)#取160-190的顏色隨機值 print("m=",m) img.putpixel((i,m))#顏色改變
這裡,是random設定隨機顏色值,在160-190之間變動,如果需要設定其他顏色值,可以改變動範圍,或是將m設定成一個固定的常數,那麼代表固定的顏色值。
附:圖片黑白互換
對於二值圖,圖片中的黑白顏色可以通過python實現相互交換。
from PIL import Image import PIL.ImageOps for i in range(1,37551): #讀入圖片 image = Image.open('C:/Users/Administrator/Desktop/bbb/'+str(i).zfill(6)+'.png') #image = image.resize((64,64)) #反轉 inverted_image = PIL.ImageOps.invert(image) #儲存圖片 inverted_image.save('C:/Users/Administrator/Desktop/bbb/'+str(i).zfill(6)+'.png')
結果
以上這篇python實現按鍵精靈找色點選功能教程,使用pywin32和Pillow庫就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。