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 相关文章推荐
haskell实现多线程服务器实例代码
Nov 26 Python
python根据路径导入模块的方法
Sep 30 Python
Python利用Beautiful Soup模块修改内容方法示例
Mar 27 Python
Python使用QRCode模块生成二维码实例详解
Jun 14 Python
tensorflow构建BP神经网络的方法
Mar 12 Python
Python3实现的简单验证码识别功能示例
May 02 Python
通过Pandas读取大文件的实例
Jun 07 Python
python调用百度地图WEB服务API获取地点对应坐标值
Jan 16 Python
python爬虫 urllib模块发起post请求过程解析
Aug 20 Python
在Tensorflow中实现梯度下降法更新参数值
Jan 23 Python
Python生成器generator原理及用法解析
Jul 20 Python
python speech模块的使用方法
Sep 09 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
php 遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码
2008/11/14 PHP
PHP基本语法总结
2014/09/06 PHP
php使用pdo连接sqlite3的配置示例
2016/05/27 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
php-fpm中max_children的配置
2019/03/15 PHP
如何在标题栏显示框架内页面的标题
2007/02/03 Javascript
运用jQuery定时器的原理实现banner图片切换
2014/10/22 Javascript
深入理解JavaScript系列(22):S.O.L.I.D五大原则之依赖倒置原则DIP详解
2015/03/05 Javascript
js强制把网址设为默认首页
2015/09/29 Javascript
输入框点击时边框变色效果的实现方法
2016/12/26 Javascript
关于Sequelize连接查询时inlude中model和association的区别详解
2017/02/27 Javascript
动态创建Angular组件实现popup弹窗功能
2017/09/15 Javascript
jQuery Validate插件ajax方式验证输入值的实例
2017/12/21 jQuery
jquery实现Ajax请求的几种常见方式总结
2019/05/28 jQuery
微信小程序实现点击效果
2019/06/21 Javascript
Node.js学习教程之Module模块
2019/09/03 Javascript
JavaScript回调函数callback用法解析
2020/01/14 Javascript
jquery实现手风琴案例
2020/05/04 jQuery
vue项目页面嵌入代码块vue-prism-editor的实现
2020/10/30 Javascript
[03:56]显微镜下的DOTA2第十一期——鬼畜的死亡先知播音员
2014/06/23 DOTA
[05:48]DOTA2英雄梦之声vol21 屠夫
2014/06/20 DOTA
Python 描述符(Descriptor)入门
2016/11/20 Python
在Pycharm中项目解释器与环境变量的设置方法
2018/10/29 Python
对python_discover方法遍历所有执行的用例详解
2019/02/13 Python
python批量解压zip文件的方法
2019/08/20 Python
使用Python的Turtle库绘制森林的实例
2019/12/18 Python
根据tensor的名字获取变量的值方式
2020/01/04 Python
Python爬虫实现自动登录、签到功能的代码
2020/08/20 Python
html5教程实现Photoshop渐变色效果
2013/12/04 HTML / CSS
HTML5响应式(自适应)网页设计的实现
2017/11/17 HTML / CSS
Canvas获取视频第一帧缩略图的实现
2020/11/11 HTML / CSS
工厂车间标语
2014/06/19 职场文书
贵阳市党的群众路线教育实践活动党(工)委领导班子整改方案
2014/10/26 职场文书
apache基于端口创建虚拟主机的示例
2021/04/22 Servers
解析CSS 提取图片主题色功能(小技巧)
2021/05/12 HTML / CSS
Python echarts实现数据可视化实例详解
2022/03/03 Python