python 截图小工具

python 截图小工具PythonImagin PIL 它提供了许多用于图像处理的功能 包括图像打开 保存 转换 绘制等

一、Windows 操作系统 Snipping Tool 截图工具
1:win+R打开运行。 
2:输入snippingtool

1:win+R打开运行。 
2:输入cmd
2:输入snippingtool

快捷键 Win + Shift + S 来打开 Snipping Tool 工具
二、用python实现屏幕截图功能
PIL实现截图
Python Imaging Library (PIL)它提供了许多用于图像处理的功能,包括图像打开、保存、转换、绘制等。
通过使用PIL库的ImageGrab方法实现坐标截屏。
安装PIL

pip install pillow

原理,代码示例:

from PIL import ImageGrab # grab()如果不加参数,是全屏。四个参数分别是要截取范围的左上角x、y和右下角的x、y坐标。 im = ImageGrab.grab(bbox=(0, 0, 100, 100)) im.save(r'img.png')
import tkinter import tkinter.filedialog import os from PIL import ImageGrab,Image from time import sleep import time #用来显示全屏幕截图并响应二次截图的窗口类 class MyCapture: def __init__(self, png): #变量X和Y用来记录鼠标左键按下的位置 self.X = tkinter.IntVar(value=0) self.Y = tkinter.IntVar(value=0) #屏幕尺寸 screenWidth = root.winfo_screenwidth() screenHeight = root.winfo_screenheight() #创建顶级组件容器 self.top = tkinter.Toplevel(root, width=screenWidth, height=screenHeight) #不显示最大化、最小化按钮 self.top.overrideredirect(True) self.canvas = tkinter.Canvas(self.top,bg='white', width=screenWidth, height=screenHeight) #显示全屏截图,在全屏截图上进行区域截图 self.image = tkinter.PhotoImage(file=png) self.canvas.create_image(screenWidth//2, screenHeight//2, image=self.image) #鼠标左键按下的位置 def onLeftButtonDown(event): self.X.set(event.x) self.Y.set(event.y) #开始截图 self.sel = True #鼠标左键移动,显示选取的区域 def onLeftButtonMove(event): if not self.sel: return global lastDraw try: #删除刚画完的图形,要不然鼠标移动的时候是黑乎乎的一片矩形 self.canvas.delete(lastDraw) except Exception as e: pass lastDraw = self.canvas.create_rectangle(self.X.get(), self.Y.get(), event.x, event.y, outline='red') #获取鼠标左键抬起的位置,保存区域截图 def onLeftButtonUp(event): self.sel = False try: self.canvas.delete(lastDraw) except Exception as e: pass sleep(0.1) #考虑鼠标左键从右下方按下而从左上方抬起的截图 left, right = sorted([self.X.get(), event.x]) top, bottom = sorted([self.Y.get(), event.y]) image = Image.open(png) pic = image.crop((left, top, right, bottom)) #pic = ImageGrab.grab((left, top, right, bottom)) txt1=time.strftime('%Y%m%d%H%M%S',time.gmtime()) #弹出保存截图对话框 fileName = tkinter.filedialog.asksaveasfilename(title='保存截图', filetypes=[("PNG file", "*.png"),("JPEG file", "*.jpeg;*.jpg"),("GIF file","*.gif"),("BMP file","*.bmp")],initialfile=txt1,defaultextension='.png') if fileName: pic.save(fileName) pic.close() #关闭当前窗口 self.top.destroy() self.canvas.bind('<Button-1>', onLeftButtonDown) self.canvas.bind('<B1-Motion>', onLeftButtonMove) self.canvas.bind('<ButtonRelease-1>', onLeftButtonUp) #让canvas充满窗口,并随窗口自动适应大小 self.canvas.pack(fill=tkinter.BOTH, expand=tkinter.YES) #开始截图 def buttonCaptureClick(): #最小化主窗口 root.state('icon') sleep(0.2) filename = 'temp.png' #grab()方法默认对全屏幕进行截图 im = ImageGrab.grab() im.save(filename) im.close() #显示全屏幕截图 w = MyCapture(filename) buttonCapture.wait_window(w.top) #截图结束,恢复主窗口,并删除临时的全屏幕截图文件 root.state('normal') os.remove(filename) #窗口居中 def center_window(root,w, h): ws = root.winfo_screenwidth() hs = root.winfo_screenheight() x = (ws/2) - (w/2) y = (hs/2) - (h/2) root.geometry('%dx%d+%d+%d' % (w, h, x, y)) root = tkinter.Tk() #设置窗口大小与位置 #root.geometry('100x40+400+300') center_window(root,95,40) #设置窗口大小不可改变 root.resizable(False, False) buttonCapture = tkinter.Button(root, text='截图', command=buttonCaptureClick) buttonCapture.place(x=10, y=10, width=80, height=20) #启动消息主循环 root.mainloop()

今天的文章 python 截图小工具分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2025-01-03 19:51
下一篇 2025-01-03 19:46

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/100376.html