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 相关文章推荐
利用numpy+matplotlib绘图的基本操作教程
May 03 Python
django中的HTML控件及参数传递方法
Mar 20 Python
利用python如何处理nc数据详解
May 23 Python
python 2.7.13 安装配置方法图文教程
Sep 18 Python
Python中应该使用%还是format来格式化字符串
Sep 25 Python
vscode 配置 python3开发环境的方法
Sep 19 Python
Python安装与卸载流程详细步骤(图解)
Feb 20 Python
Python定义函数实现累计求和操作
May 03 Python
python3.9.1环境安装的方法(图文)
Feb 02 Python
python opencv通过按键采集图片源码
May 20 Python
python DataFrame中stack()方法、unstack()方法和pivot()方法浅析
Apr 06 Python
Python写情书? 10行代码展示如何把情书写在她的照片里
Apr 21 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
PHILIPS L4X25T电路分析和打理
2021/03/02 无线电
PHP删除特定数组内容并且重建数组索引的方法.
2011/03/25 PHP
PHP使用header()输出图片缓存实例
2014/12/09 PHP
weiphp微信公众平台授权设置
2016/01/04 PHP
云网广告中的代码,提示出错,大家找找
2006/11/21 Javascript
js 图片轮播(5张图片)
2008/12/30 Javascript
兼容多浏览器的iframe自适应高度(ie8 、谷歌浏览器4.0和 firefox3.5.3)
2009/11/04 Javascript
jquery下操作HTML控件的实现代码
2010/01/12 Javascript
javascript高级学习笔记整理
2011/08/14 Javascript
jquery 笔记 事件
2011/11/02 Javascript
浅析LigerUi开发中谨慎载入common.css文件
2013/07/09 Javascript
nodejs npm install全局安装和本地安装的区别
2014/06/05 NodeJs
JavaScript开发人员的10个关键习惯小结
2014/12/05 Javascript
javascript函数式编程程序员的工具集
2015/10/11 Javascript
原生js实现类似fullpage的单页/全屏滚动
2017/01/22 Javascript
jquery设置css样式的多种方法(总结)
2017/02/21 Javascript
利用Vue.js框架实现火车票查询系统(附源码)
2017/02/27 Javascript
jQuery使用bind动态绑定事件无效的处理方法
2018/12/11 jQuery
Net微信网页开发 使用微信JS-SDK获取当前地理位置过程详解
2019/08/26 Javascript
js模拟F11页面全屏显示
2019/09/17 Javascript
python下如何让web元素的生成更简单的分析
2008/07/17 Python
Python依赖包整体迁移方法详解
2019/08/15 Python
什么叫应用程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?
2012/05/23 面试题
请问软件开发中的设计模式你会使用哪些
2015/05/13 面试题
石油大学毕业生自荐信
2014/01/28 职场文书
如何撰写岗位职责
2014/02/01 职场文书
模具专业毕业推荐信
2014/03/08 职场文书
书香校园建设方案
2014/05/02 职场文书
法学专业毕业生自荐信
2014/06/11 职场文书
党员自我剖析材料
2014/08/31 职场文书
党的群众路线个人对照检查材料
2014/09/23 职场文书
2016国庆节活动宣传语
2015/11/25 职场文书
《童年的发现》教学反思
2016/02/18 职场文书
golang中切片copy复制和等号复制的区别介绍
2021/04/27 Golang
javascript对象3个属性特征
2021/11/17 Javascript
Redis命令处理过程源码解析
2022/02/12 Redis