python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
作者:简尼 发布时间:2023-11-08 18:30:34
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,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, 0) # 鼠标左键按下
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, x, y, 0, 0) # 鼠标左键弹起
# win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN + win32con.MOUSEEVENTF_LEFTUP, x, y, 0, 0) # 测试
def PressOnce(x): # 模拟键盘输入一个按键的值,键码: x
win32api.keybd_event(x, 0, 0, 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, 125, 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,j),(m,m,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')
结果
来源:https://blog.csdn.net/lrnboy/article/details/85227548
猜你喜欢
- 1 、创建一个django项目使用django-admin.py startproject MyDjangoSite 参考这里2、建立视图f
- 可输入的下拉列表框(select),这个不同于网页上常见的下拉列表框,那个是只能选择不能输入的,而这个是可以自己输入文字的。例如:我们最常见
- 方法一【推荐】、用js插入flash,可防止虚线框激活建立一个ShowFlash.js文件,拷贝以下代码:function sho
- 通常的聊天室所采用的程序,也就是Chat程序了,其基本结构原理是不会采用到数据库的。那究竟采用什么技术呢?我们知道ASP变量当中Sessio
- 本文实例讲述了Golang算法问题之数组按指定规则排序的方法。分享给大家供大家参考,具体如下:给出一个二维数组,请将这个二维数组按第i列(i
- 现象:在IE下,用JS修改p标签的innerHTML时,出"未知的运行时错误(unknown runtime error)&quo
- flash_url : "../swfupload/swfupload_f8.swf" upload_url: &quo
- 有些使用Z-Blog的用户询问我,怎么实现我的月光博客首页上这种自动图文混排的版式效果,今天我就详细介绍一下在Z-Blog中实现这种图文混排
- 研究编码,得知GB2312编码与区位码的关系,尝试之后,得此程序。搜索,似乎没人写,故发此地。1.简述(1)GB2312标准的定义,其实就是
- 如何一行行地读取文件?这样就可以做到一行行地读出了:dim input(30) ' 定义一个数组,大小
- 1、从数据库表中检索信息实际上,前面我们已经用到了SELECT语句,它用来从数据库表中检索信息。select语句格式一般为:SELECT 检
- 一位资深的设计师曾经向我抱怨,说老板不仅让他做“设计”工作,还让他做“制作”工作,真是很烦。言下之意,“制作”还要一个资深设计师亲自上阵,未
- 1. 常用模块# 连接数据库connect()函数创建一个新的数据库连接对话并返回一个新的连接实例对象PG_CONF_123 = {
- 1. 用Dreamweaver 4.0轻松设计会自动弹性调整的网页 首先需要保证的是你的页面内容采用了表格的格式,然后打开你要编辑的页面,按
- ASP中查询数据库记录写入XML文件示例,把下面代码保存为Asp_XML.asp运行即可: &
- “没 Javascript 就会死”的页面通常都会加入 noscript 标签用于提示用户开启脚本支持。 然而在 IE8 下,如果在 nos
- 最近服务器时不时出现Nginx 502 Bad Gateway,如果在电脑旁边还好,要是半夜或者出去了,怎么办?没关系,写个脚本检测服务状态
- 最近一直在做Dnn模块的开发,过程中碰到这么一个问题,需要同时插入N条数据,不想在程序里控制,但是SQL Sever又不支持数组参数.所以只
- 一、引用计数基础知识每个php变量存在一个叫 zval 的变量容器中。一个 zval 变量容器,除了包含变量的类型和值,还包括两个字节的额外
- 本文实例为大家分享了用户登录系统python实现代码,供大家参考,具体内容如 * 意事项: 1、使用python3执行程序。按提示输入1或2,