• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    python 实现图片裁剪小工具

    完整项目地址下载:https://github.com/rainbow-tan/rainbow/tree/master/%E8%A3%81%E5%89%AA%E5%9B%BE%E7%89%87

    实现:tkinter 画布上显示图片,按下鼠标左键并且移动,实现截图

    # -*- encoding=utf-8 -*-
    import os
    import tkinter as tk
    
    from PIL import Image
    from PIL import ImageTk
    
    left_mouse_down_x = 0
    left_mouse_down_y = 0
    left_mouse_up_x = 0
    left_mouse_up_y = 0
    sole_rectangle = None
    
    
    def left_mouse_down(event):
      # print('鼠标左键按下')
      global left_mouse_down_x, left_mouse_down_y
      left_mouse_down_x = event.x
      left_mouse_down_y = event.y
    
    
    def left_mouse_up(event):
      # print('鼠标左键释放')
      global left_mouse_up_x, left_mouse_up_y
      left_mouse_up_x = event.x
      left_mouse_up_y = event.y
      corp_img(img_path, 'img/one_corp.png', left_mouse_down_x, left_mouse_down_y,
           left_mouse_up_x, left_mouse_up_y)
    
    
    def moving_mouse(event):
      # print('鼠标左键按下并移动')
      global sole_rectangle
      global left_mouse_down_x, left_mouse_down_y
      moving_mouse_x = event.x
      moving_mouse_y = event.y
      if sole_rectangle is not None:
        canvas.delete(sole_rectangle) # 删除前一个矩形
      sole_rectangle = canvas.create_rectangle(left_mouse_down_x, left_mouse_down_y, moving_mouse_x,
                           moving_mouse_y, outline='red')
    
    
    def right_mouse_down(event):
      # print('鼠标右键按下')
      pass
    
    
    def right_mouse_up(event):
      # print('鼠标右键释放')
      pass
    
    
    def corp_img(source_path, save_path, x_begin, y_begin, x_end, y_end):
      if x_begin  x_end:
        min_x = x_begin
        max_x = x_end
      else:
        min_x = x_end
        max_x = x_begin
      if y_begin  y_end:
        min_y = y_begin
        max_y = y_end
      else:
        min_y = y_end
        max_y = y_begin
      save_path = os.path.abspath(save_path)
      if os.path.isfile(source_path):
        corp_image = Image.open(source_path)
        region = corp_image.crop((min_x, min_y, max_x, max_y))
        region.save(save_path)
        print('裁剪完成,保存于:{}'.format(save_path))
      else:
        print('未找到文件:{}'.format(source_path))
    
    
    if __name__ == '__main__':
      pass
      win = tk.Tk()
      frame = tk.Frame()
      frame.pack()
      screenwidth = win.winfo_screenwidth()
      screenheight = win.winfo_screenheight()
      img_path = 'img/one.png'
      # img_path = 'img/bg.jpg'
      # img_path = 'img/test.jpg'
      # img_path = 'img/pic.gif'
      image = Image.open(img_path)
      image_x, image_y = image.size
      if image_x > screenwidth or image_y > screenheight:
        print('The picture size is too big,max should in:{}x{}, your:{}x{}'.format(screenwidth,
                                              screenheight,
                                              image_x,
                                              image_y))
      img = ImageTk.PhotoImage(image)
      canvas = tk.Canvas(frame, width=image_x, height=image_y, bg='pink')
      i = canvas.create_image(0, 0, anchor='nw', image=img)
      canvas.pack()
      canvas.bind('Button-1>', left_mouse_down) # 鼠标左键按下
      canvas.bind('ButtonRelease-1>', left_mouse_up) # 鼠标左键释放
      canvas.bind('Button-3>', right_mouse_down) # 鼠标右键按下
      canvas.bind('ButtonRelease-3>', right_mouse_up) # 鼠标右键释放
      canvas.bind('B1-Motion>', moving_mouse) # 鼠标左键按下并移动
      win.mainloop()

    原图one.png

     运行

    one_corp.png

    以上就是python 实现图片裁剪小工具的详细内容,更多关于python 图片裁剪的资料请关注脚本之家其它相关文章!

    您可能感兴趣的文章:
    • 详解Python+opencv裁剪/截取图片的几种方式
    • Python基于tkinter canvas实现图片裁剪功能
    • Python OpenCV实现裁剪并保存图片
    • Python 读取xml数据,cv2裁剪图片实例
    • python通过opencv实现图片裁剪原理解析
    • Python实现图片裁剪的两种方式(Pillow和OpenCV)
    • python openvc 裁剪、剪切图片 提取图片的行和列
    • python PIL和CV对 图片的读取,显示,裁剪,保存实现方法
    • python实现对图片进行旋转,放缩,裁剪的功能
    • Python图片处理之图片裁剪教程
    上一篇:python向xls写入数据(包括合并,边框,对齐,列宽)
    下一篇:Python实现简单猜数字游戏
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    python 实现图片裁剪小工具 python,实现,图片,裁剪,小,