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

目录

  • 功能描述
  • 功能拆解
  • 技术方案
    • 依赖
      • tkinter
        • 全屏显示窗口
        • 监听鼠标动作
        • 显示按钮到指定位置
      • pillow
        • 截取全屏截图
        • 绘制矩形
        • 裁剪图片
      • ctypes
        • windows剪贴板函数
        • ctypes调用
    • 执行流程
  • 具体实现

功能描述

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

功能拆解

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

技术方案

依赖

tkinter

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

全屏显示窗口
# 置顶
root.attributes('-topmost', True)
# 全屏
root.attributes('-fullscreen', True)
监听鼠标动作
label.bind('', self.onHoldLeftButton)
label.bind('', 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))

你可能感兴趣的:(技术分享,python,windows,开发语言)