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爬虫之打包生成exe文件
Nov 06 Python
python获取多线程及子线程的返回值
Nov 15 Python
Python内置函数reversed()用法分析
Mar 20 Python
python3中函数参数的四种简单用法
Jul 09 Python
tensorflow实现图像的裁剪和填充方法
Jul 27 Python
Python之修改图片像素值的方法
Jul 03 Python
python logging.basicConfig不生效的原因及解决
Feb 20 Python
python实现同一局域网下传输图片
Mar 20 Python
windows10环境下用anaconda和VScode配置的图文教程
Mar 30 Python
Django admin 实现search_fields精确查询实例
Mar 30 Python
python 实现批量图片识别并翻译
Nov 02 Python
Python数据模型与Python对象模型的相关总结
Jan 26 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中cookie的作用域
2008/03/27 PHP
关于file_get_contents返回为空或函数不可用的解决方案
2013/06/24 PHP
浅谈web上存漏洞及原理分析、防范方法(文件名检测漏洞)
2013/06/29 PHP
PHP中快速生成随机密码的几种方式
2017/04/17 PHP
php中加密解密DES类的简单使用方法示例
2020/03/26 PHP
IE6下js通过css隐藏select的一个bug
2010/08/16 Javascript
node.js中的fs.symlink方法使用说明
2014/12/15 Javascript
jQuery中data()方法用法实例
2014/12/27 Javascript
js实现不提交表单获取单选按钮值的方法
2015/08/21 Javascript
js实现仿京东2级菜单效果(带延时功能)
2015/08/27 Javascript
AngularJS Ajax详解及示例代码
2016/08/17 Javascript
小程序云开发初探(小结)
2018/10/24 Javascript
Layui实现带查询条件的分页
2019/07/27 Javascript
只有 20 行的 JavaScript 模板引擎实例详解
2020/05/11 Javascript
vue treeselect获取当前选中项的label实例
2020/08/31 Javascript
通过实例解析jQ Ajax操作相关原理
2020/09/23 Javascript
在antd4.0中Form使用initialValue操作
2020/11/02 Javascript
[45:25]完美世界DOTA2联赛循环赛 PXG vs IO 第一场 11.06
2020/11/09 DOTA
python机器学习库常用汇总
2017/11/15 Python
Python使用gRPC传输协议教程
2018/10/16 Python
python实现图片转字符小工具
2019/04/30 Python
通过selenium抓取某东的TT购买记录并分析趋势过程解析
2019/08/15 Python
python词云库wordcloud的使用方法与实例详解
2020/02/17 Python
Django中的session用法详解
2020/03/09 Python
Lancome兰蔻官方旗舰店:来自法国的世界知名美妆品牌
2018/06/14 全球购物
波兰最早的运动鞋精品店之一:Street Supply
2019/08/29 全球购物
Farfetch澳大利亚官网:Farfetch Australia
2020/04/26 全球购物
进程的查看和调度分别使用什么命令
2015/03/25 面试题
法律专业个人实习自我鉴定
2013/09/23 职场文书
土木工程师职业规划范文
2014/03/07 职场文书
物流管理专业推荐信
2014/09/06 职场文书
庆祝儿童节标语
2014/10/09 职场文书
台风停课通知
2015/04/24 职场文书
离婚协议书格式范本
2016/03/18 职场文书
七年级作文之秋游
2019/10/21 职场文书
实现AJAX异步调用和局部刷新的基本步骤
2022/03/17 Javascript