python实现按键精灵找色点击功能教程,使用pywin32和Pillow库


Posted in Python onJune 04, 2020

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')

结果

python实现按键精灵找色点击功能教程,使用pywin32和Pillow库

以上这篇python实现按键精灵找色点击功能教程,使用pywin32和Pillow库就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
编写Python脚本使得web页面上的代码高亮显示
Apr 24 Python
Python中datetime常用时间处理方法
Jun 15 Python
八大排序算法的Python实现
Jan 28 Python
Python可变参数用法实例分析
Apr 02 Python
python中使用xlrd读excel使用xlwt写excel的实例代码
Jan 31 Python
Python最小二乘法矩阵
Jan 02 Python
python远程调用rpc模块xmlrpclib的方法
Jan 11 Python
Python 图像处理: 生成二维高斯分布蒙版的实例
Jul 04 Python
Python列表操作方法详解
Feb 09 Python
Python urllib库如何添加headers过程解析
Oct 05 Python
Python扫描端口的实现
Jan 25 Python
浅谈Python列表嵌套字典转化的问题
Apr 07 Python
解决python图像处理图像赋值后变为白色的问题
Jun 04 #Python
Python爬虫JSON及JSONPath运行原理详解
Jun 04 #Python
python 实现图像快速替换某种颜色
Jun 04 #Python
python下对hsv颜色空间进行量化操作
Jun 04 #Python
Python-opencv实现红绿两色识别操作
Jun 04 #Python
Python基于pandas绘制散点图矩阵代码实例
Jun 04 #Python
Python使用plt.boxplot() 参数绘制箱线图
Jun 04 #Python
You might like
推荐几部必看的DC动画电影
2020/03/03 欧美动漫
安装PHP可能遇到的问题“无法载入mysql扩展” 的解决方法
2007/04/16 PHP
php UBB 解析实现代码
2011/11/27 PHP
PHP中使用foreach和引用导致程序BUG的问题介绍
2012/09/05 PHP
php对数组排序代码分享
2014/02/24 PHP
Thinkphp5行为使用方法汇总
2017/12/21 PHP
thinkphp框架类库扩展操作示例
2019/11/26 PHP
JavaScript DOM 学习第二章 编辑文本
2010/02/19 Javascript
推荐40个非常优秀的jQuery插件和教程【系列三】
2011/11/09 Javascript
jquery实现兼容IE8的异步上传文件
2015/06/15 Javascript
JS基于Mootools实现的个性菜单效果代码
2015/10/21 Javascript
Javascript编程之继承实例汇总
2015/11/28 Javascript
jQuery侧边栏实现代码
2016/05/06 Javascript
Nodejs获取网络数据并生成Excel表格
2020/03/31 NodeJs
vue.js整合mint-ui里的轮播图实例代码
2017/12/27 Javascript
JS实现为动态添加的元素增加事件功能示例【基于事件委托】
2018/03/21 Javascript
JS实现随机抽取三人
2019/11/06 Javascript
Vue(定时器)解决mounted不能获取到data中的数据问题
2020/07/30 Javascript
[03:20]次级联赛厮杀超职业 现超级兵对拆世纪大战
2014/10/30 DOTA
python数据封装json格式数据
2018/03/04 Python
python获取网页中所有图片并筛选指定分辨率的方法
2018/03/31 Python
python3中的md5加密实例
2018/05/29 Python
Python实现绘制双柱状图并显示数值功能示例
2018/06/23 Python
python实现简单的单变量线性回归方法
2018/11/08 Python
python 实现视频流下载保存MP4的方法
2019/01/09 Python
python输入多行字符串的方法总结
2019/07/02 Python
Python 3.6 中使用pdfminer解析pdf文件的实现
2019/09/25 Python
动态设置django的model field的默认值操作步骤
2020/03/30 Python
Linux不知道文件后缀名怎么判断文件类型
2014/08/21 面试题
外企求职信范文分享
2013/12/31 职场文书
销售辞职报告范文
2014/01/12 职场文书
制药工程专业职业生涯规划范文
2014/03/10 职场文书
2014乡党委副书记党建工作汇报材料
2014/11/02 职场文书
幼儿教师个人总结
2015/02/05 职场文书
2015年留守儿童工作总结
2015/05/22 职场文书
golang协程池模拟实现群发邮件功能
2021/05/02 Golang