首先安装PIL库:

import tkinter as tk
from PIL import Image,ImageTk
import sys
import tkinter.filedialog
import os#先将图片填充为正方形
def fill_image(image): width, height = image.size #比较图片的宽和高,选取值较大的作为新图的宽 newImage_width = width if width > height else height #生成正方形图,空白处用白色填充newImage = Image.new(image.mode, (newImage_width, newImage_width), color='white')  #如果原图宽大于高,则填充图片的竖直维度if width > height: newImage.paste(image, (0, int((newImage_width - height) / 2))) else: newImage.paste(image, (int((newImage_width - width) / 2),0)) return newImage
# 切图(切成9张图)
def cut_image(image):width, height = image.sizecolWidth = int(width / 3)   #一行3张image_grid = []for i in range(0,3):for j in range(0,3):row = (j*colWidth,i*colWidth,(j+1)*colWidth,(i+1)*colWidth)image_grid.append(row)image_list = [image.crop(row) for row in image_grid]return image_list#保存图片
def save_images(image_list): index = 1temp_=os.path.realpath(sys.argv[0])     # 获取当前运行的文件名称for image in image_list: image.save(os.path.dirname(temp_) + '/' + str(index) + '.png', 'PNG') index+=1# 单击选择图片按钮,选择并显示图片
def select_button():global aa = tk.filedialog.askopenfilename()#显示图片img = Image.open(a)out = img.resize((310,280))   #设置图片的大小#out.save("new.png") #保存图片render = ImageTk.PhotoImage(out)img = tkinter.Label(image=render)img.image = renderimg.place(x=30, y=60)txt.set(a)  #显示图片文件路径# 单击切分图片按钮,实现图片分割
def cut_button():file_path = a # 获取图片路径image = Image.open(file_path) image_new = fill_image(image) image_list = cut_image(image_new)save_images(image_list) label1.config(text='切图成功!请在程序所在目录查看!')# 设置窗口
main = tk.Tk()
#设置窗口的大小
main.geometry('400x400')
main.title('九宫格切图器')       #设置标题栏
main.iconbitmap('G:/code/050/favicon.ico')   #窗口图标
label1 = tk.Label(main,text='显示要切分图片的文件路径:',fg='blue')
label1.pack()
txt = tkinter.StringVar()
txt_entry = tkinter.Entry(main, width=55, textvariable=txt)
txt_entry.pack()
button1=tk.Button(main,width=10, height=1,text='选择图片',command=select_button).place(x=30, y=360)
button2=tk.Button(main,width=10, height=1,text='切分图片',command=cut_button).place(x=120, y=360)
main.mainloop() # 执行主循环

运行结果:

九宫格切图器(每天一个python小项目)相关推荐

  1. 我写了一个Python小项目

    最近我写了一个 Python 练手小项目,它是一个 PC 桌面版的便签程序,很简陋.写这个小项目是为了熟悉一下用 Python 进行一个完整的项目开发,进一步熟练 Python 的使用. 界面是这样的 ...

  2. python秒表项目_第一个Python小项目——秒表

    一.项目描述: 前言: 这只是我今天试着写的一个小项目,这个项目我发在博客上只是为了便于保存,日后自己看起来方便,所以很多地方没有写注释,如果大家有什么想法,欢迎给我留言. 项目名称: 简易秒表 开发 ...

  3. 使用OpenCV-Python为照片添加不同滤镜(每天一个python小项目)

    原图如下所示: 灰度滤镜 import cv2 # 导入OpenCV-Python模块 import os # 导入文件与系统模块 import numpy as np # 导入数值计算库'''* 功 ...

  4. 随机抽奖程序(每天一个python小项目)

    import random num = [] # 用于存放抽奖码 print("欢迎来到抽奖小程序!")while True:usernum = input("请输入参与 ...

  5. 创建动态时钟(每天一个python小项目)

    ''' 动态时钟 ''' import turtle # 导入绘图海龟模块 import datetime # 导入日期时间模块# 移动一段距离 def skip(distance): # 移动方法, ...

  6. 幸运大转盘(每天一个python小项目)

    from turtle import * import turtle from random import randint import sys #屏幕初始化 screen = turtle.Scre ...

  7. 商品价格竞猜简易版(每天一个python小项目)

    list = [['小米手环4',209],['荣耀手环5',199],['华为手环B5',849],['ZNNCO智能血压手环',379]] order = 0 price = 0 print(&q ...

  8. 基于tkinter的随机抽奖程序(每天一个python小项目)

    import csv import tkinter as tk import tkinter.messagebox import datetime import pandas as pd import ...

  9. Django实现微信小程序九宫格切图后端(第九周学习记录)

    第九周学习记录 上周第八周确实没有发布我的学习记录,因为服务器的原因项目也一直延迟,好在周日老师的服务器批下来,小伙伴也开始了快乐windows服务器配置,我自然也不能闲着,这周开始赶进度 一.小程序 ...

最新文章

  1. python2和python3 在windows下公用 导致python2 pip无法使用 报ssl的错误
  2. MIT与FAIR提出「mixup」,利用数据和标签的随机线性插值提高神经网络的健壮性
  3. 录制声音并且播放录取的声音
  4. UVa 537 - Artificial Intelligence?
  5. 程序员的一个爬虫,把估值175亿的马蜂窝给捅了
  6. 函数防抖和函数节流的最简单解释
  7. 【Leetcode】【Medium】Rotate Image
  8. 分割等和子集—leetcode416
  9. SpringMVC Redirect 跳转后保存Model中的数据
  10. 百度支持nofollow是百度的进步
  11. 一看就懂-grep命令详解
  12. 思维导图设计测试用例
  13. 【WEB端移动端】企业官网高保真Axure原型模板
  14. python中右对齐_python右对齐的实例方法
  15. 酷冷战神 先手致胜:腾讯ROG游戏手机6为游戏而生
  16. ol,li,ul列表
  17. primary计算机英语,模拟试题1_计算机专业英语_doc_大学课件预览_高等教育资讯网...
  18. 基于javaweb+mysql的医药信息管理系统(java+SSM+HTML+easyui+mysql)
  19. Python - 文件基础操作
  20. 三代笔记本CPU 正式版代号(升级联想K29笔记本)

热门文章

  1. git stash暂存修改
  2. mac数字键盘错乱_苹果电脑键盘打不出数字解决办法
  3. [VB.NET]如何设置随机数的种子
  4. Android 绘制录音波浪 + 拓展: 让“字体”迎波而浪
  5. 网络层的拥塞控制与服务质量
  6. 骑行318、 2016.7.19
  7. PAT日志 1055
  8. [Android]进程通信Andromeda框架
  9. 【基础】603- 深入分析Session和Cookie
  10. 计算机视觉城市排名,计算机视觉技术量化城市变迁