【练手小项目】Python截图工具

本文介绍了使用Python和tkinter、pillow、ctypes库创建一个全屏截图工具的过程。用户可以通过鼠标拖拽选择截图区域,选定后截图将被保存到剪贴板,方便在其他程序中使用。
摘要由CSDN通过智能技术生成

功能描述

运行脚本后用鼠标拖拽选择屏幕上需要截图的区域,确认后将选中的区域放到剪贴版中,可粘贴其他程序中进行使用

功能拆解

截取屏幕画面
获取鼠标移动、点击、位置信息
裁剪图片
实时显示选中的部分
将图片添加到剪切板

技术方案

依赖

tkinter

tkinter 负责显示和处理鼠标的操作

全屏显示窗口
# 置顶
root.attributes('-topmost', True)
# 全屏
root.attributes('-fullscreen', True)
监听鼠标动作
label.bind('<Button-1>', self.onHoldLeftButton)
label.bind('<B1-Motion>', self.onHoldLeftButtonMove)
显示按钮到指定位置
toolkit.place(x=self.end_x, y=self.end_y, anchor='ne')

pillow

pillow 负责图片操作

截取全屏截图
 ImageGrab.grab()
绘制矩形
dImage = ImageDraw.Draw(img)
dImage.rectangle(pos, outline='red', width=2)
裁剪图片
image.crop(pos)

ctypes

ctypes 调用Windows原生API操作剪切板

windows剪贴板函数
HANDLE SetClipboardData(
  [in]           UINT   uFormat,
  [in, optional] HANDLE hMem
);

文档

ctypes调用
user32 = ctypes.windll.user32

user32.SetClipboardData.argtypes = [UINT, HANDLE]
user32.SetClipboardData.restype = HANDLE

user32.SetClipboardData(type, ctypes.c_char_p(alloc))

执行流程

  1. 截取全屏截图,全屏显示到屏幕上。
  2. 监听鼠标点击和移动操作,将点击位置和光标当前位置作为矩形的对角。
  3. 根据光标当前位置显示确认按钮
  4. 在全屏截图上将这个矩形描边绘制,重新显示到屏幕上
  5. 点击确认后将选中区域裁剪出来存入剪贴板

具体实现

通过tkinter定义窗口

import tkinter as tk

from PIL import ImageGrab, ImageTk

import image

class Window:
    def 
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值