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映射拆分操作符用法实例
May 19 Python
python判断字符串是否是json格式方法分享
Nov 07 Python
python 给DataFrame增加index行名和columns列名的实现方法
Jun 08 Python
Python实现字符型图片验证码识别完整过程详解
May 10 Python
python实现海螺图片的方法示例
May 12 Python
python实现根据给定坐标点生成多边形mask的例子
Feb 18 Python
Django模板之基本的 for 循环 和 List内容的显示方式
Mar 31 Python
基于matplotlib xticks用法详解
Apr 16 Python
Python爬虫实现vip电影下载的示例代码
Apr 20 Python
pyCharm 设置调试输出窗口中文显示方式(字符码转换)
Jun 09 Python
tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T
Jun 22 Python
移除Selenium中window.navigator.webdriver值
Jun 10 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
Laravel实现构造函数自动依赖注入的方法
2016/03/16 PHP
iOS+PHP注册登录系统 PHP部分(上)
2016/12/26 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
Avengerls vs KG BO3 第二场2.18
2021/03/10 DOTA
jquery中EasyUI使用技巧小结
2015/02/10 Javascript
在JS中操作时间之getUTCMilliseconds()方法的使用
2015/06/10 Javascript
以jQuery中$.Deferred对象为例讲解promise对象是如何处理异步问题
2015/11/13 Javascript
jQuery中attr()与prop()函数用法实例详解(附用法区别)
2015/12/29 Javascript
js中数组结合字符串实现查找(屏蔽广告判断url等)
2016/03/30 Javascript
JS和jQuery使用submit方法无法提交表单的原因分析及解决办法
2016/05/17 Javascript
使用do...while的方法输入一个月中所有的周日(实例代码)
2016/07/22 Javascript
angular基于路由控制ui-router实现系统权限控制
2016/09/27 Javascript
利用jQuery实现滑动开关按钮效果(附demo源码下载)
2017/02/07 Javascript
jQuery使用JSONP实现跨域获取数据的三种方法详解
2017/05/04 jQuery
微信小程序基于本地缓存实现点赞功能的方法
2017/12/18 Javascript
vue组件编写之todolist组件实例详解
2018/01/22 Javascript
Vue 让元素抖动/摆动起来的实现代码
2018/05/31 Javascript
通过Nodejs搭建网站简单实现注册登录流程
2019/06/14 NodeJs
JS前端面试必备——基本排序算法原理与实现方法详解【插入/选择/归并/冒泡/快速排序】
2020/02/24 Javascript
python实现的udp协议Server和Client代码实例
2014/06/04 Python
python分析apache访问日志脚本分享
2015/02/26 Python
Python对文件和目录进行操作的方法(file对象/os/os.path/shutil 模块)
2017/05/08 Python
python如何处理程序无法打开
2020/06/16 Python
详解python百行有效代码实现汉诺塔小游戏(简约版)
2020/10/30 Python
马来西亚最大的电器网站:Senheng
2017/10/13 全球购物
德国高端单身人士交友网站:ElitePartner
2018/12/02 全球购物
装潢设计实习自我鉴定
2013/09/19 职场文书
档案室主任岗位职责
2014/02/12 职场文书
家长学校实施方案
2014/03/15 职场文书
黄石寨导游词
2015/02/05 职场文书
求职自荐信怎么写
2015/03/04 职场文书
2015年实习班主任工作总结
2015/04/23 职场文书
2015年度个人业务工作总结
2015/04/27 职场文书
2015年妇幼保健工作总结
2015/05/19 职场文书
幽默导游词开场白
2015/05/29 职场文书
导游词之阳朔遇龙河
2019/12/16 职场文书