python实现图片九宫格分割


Posted in Python onMarch 07, 2021

大家都知道在微信朋友圈或者微博以及QQ动态中,有很多“强迫症患者”发图片都爱发9张,而有些图是一张图片分成的九宫图,对于这种操作,大家知道是怎么做到的吗?

本文就是用Python做的一个九宫格图片生成器,是一个打包好的exe文件,用户无需部署安装Python的开发环境,在本地就可以运行此程序,以此快速生成九宫格图片。

下面是程序的所有代码,这是一个Python GUI程序,代码不多,也很容易理解:

# -*- coding: UTF-8 -*-
# 将一张图片分成九张,九宫格
import tkinter as tk
from PIL import Image 
import sys 
 
 
#先将 input image 填充为正方形 
def fill_image(image): 
 width, height = image.size 
 #选取长和宽中较大值作为新图片的 
 new_image_length = width if width > height else height 
 #生成新图片[白底] 
 new_image = Image.new(image.mode, (new_image_length, new_image_length), color='white') #注意这个函数! 
 #将之前的图粘贴在新图上,居中 
 if width > height:#原图宽大于高,则填充图片的竖直维度 #(x,y)二元组表示粘贴上图相对下图的起始位置,是个坐标点。 
 new_image.paste(image, (0, int((new_image_length - height) / 2))) 
 else: 
 new_image.paste(image, (int((new_image_length - width) / 2),0)) 
 return new_image 
 
# 分割图片 
def cut_image(image):
 width, height = image.size
 item_width = int(width / 3) #因为朋友圈一行放3张图。
 box_list = []
 # (left, upper, right, lower)
 for i in range(0,3):
 for j in range(0,3):
 #print((i*item_width,j*item_width,(i+1)*item_width,(j+1)*item_width))
 box = (j*item_width,i*item_width,(j+1)*item_width,(i+1)*item_width)
 box_list.append(box)
 image_list = [image.crop(box) for box in box_list]
 return image_list
 
#保存图片 
def save_images(image_list): 
 index = 1 
 for image in image_list: 
 image.save(str(index) + '.png', 'PNG') 
 index += 1 
 
 
# 点击按钮,实现图片分割
def cTofClicked():
 file_path=str(entryCd.get()) # 获取要进行分割的图片路径
 image = Image.open(file_path) 
 #image.show() 
 image = fill_image(image) 
 image_list = cut_image(image) 
 save_images(image_list) 
 labelcTof.config(text="九宫格图片已生,请在程序所在目录查看!")
 
# 窗体
top=tk.Tk()
top.title('九宫格图片生成器')
labelcTof=tk.Label(top,text="请输入要进行转换的图片路径:",height=4,\
 width=40,fg="blue") 
labelcTof.pack()
entryCd=tk.Entry(top,text='0') # 文本框,获取图片路径
entryCd.pack()
label_tip=tk.Label(top,text="请检查图片路径是否输入正确!",height=2,\
 width=40,fg="gray") 
label_tip.pack()
btnCal=tk.Button(top,text="点击生成九宫格图片",fg="red",bg="yellow",command=cTofClicked) # 点击回调函数
btnCal.pack()
 
top.mainloop() # 执行主循环

打包好的exe程序下载地址:python实现图片九宫格分割

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
linux环境下安装pyramid和新建项目的步骤
Nov 27 Python
Python Deque 模块使用详解
Jul 04 Python
python使用wxPython打开并播放wav文件的方法
Apr 24 Python
关于Python数据结构中字典的心得
Dec 04 Python
Python numpy 点数组去重的实例
Apr 18 Python
Python爬取数据保存为Json格式的代码示例
Apr 09 Python
python 三元运算符使用解析
Sep 16 Python
Python time库基本使用方法分析
Dec 13 Python
python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例
Feb 28 Python
Python  word实现读取及导出代码解析
Jul 09 Python
Python实现加密的RAR文件解压的方法(密码已知)
Sep 11 Python
pycharm 使用anaconda为默认环境的操作
Feb 05 Python
django最快程序开发流程详解
Jul 19 #Python
python打印9宫格、25宫格等奇数格 满足横竖斜相加和相等
Jul 19 #Python
Django REST framework 视图和路由详解
Jul 19 #Python
Django使用模板后无法找到静态资源文件问题解决
Jul 19 #Python
Django模板Templates使用方法详解
Jul 19 #Python
python GUI图形化编程wxpython的使用
Jul 19 #Python
Django 外键的使用方法详解
Jul 19 #Python
You might like
逆序二维数组插入一元素的php代码
2012/06/08 PHP
php cli模式学习(PHP命令行模式)
2013/06/03 PHP
PHP设计模式之代理模式的深入解析
2013/06/13 PHP
php实现过滤UBB代码的类
2015/03/12 PHP
php实现点击可刷新验证码
2015/11/07 PHP
php页面跳转session cookie丢失导致不能登录等问题的解决方法
2016/12/12 PHP
PHP多线程模拟实现秒杀抢单
2018/02/07 PHP
PHP终止脚本运行三种实现方法详解
2020/09/01 PHP
JavaScript中数组对象的那些自带方法介绍
2013/03/12 Javascript
使用javascript控制cookie显示和隐藏背景图
2014/02/12 Javascript
jQuery中的AjaxSubmit使用讲解
2016/09/25 Javascript
AngularJS中$http使用的简单介绍
2017/03/17 Javascript
详解如何在NodeJS项目中优雅的使用ES6
2017/04/22 NodeJs
BootStrap 动态表单效果
2017/06/02 Javascript
详解VueJS应用中管理用户权限
2018/02/02 Javascript
JS立即执行函数功能与用法分析
2019/01/15 Javascript
JS拖拽排序插件Sortable.js用法实例分析
2019/02/20 Javascript
详解JavaScript的内存空间、赋值和深浅拷贝
2019/04/17 Javascript
Vue使用mixin分发组件的可复用功能
2019/09/01 Javascript
Python简单生成随机姓名的方法示例
2017/12/27 Python
Python读取mat文件,并保存为pickle格式的方法
2018/10/23 Python
Python 元组操作总结
2019/09/18 Python
python中uuid模块实例浅析
2020/12/29 Python
Matplotlib配色之Colormap详解
2021/01/05 Python
南非最受欢迎的时尚品牌:MRP
2016/09/18 全球购物
中学生团员自我评价分享
2013/12/07 职场文书
酒店led欢迎词
2014/01/09 职场文书
年终晚会主持词
2014/03/25 职场文书
婚前协议书范本
2014/04/15 职场文书
师德师风的心得体会
2014/09/02 职场文书
大学生党员自我批评思想汇报
2014/10/10 职场文书
党的群众路线教育实践活动心得体会(教师)
2014/10/31 职场文书
项目安全员岗位职责
2015/02/15 职场文书
2015少先队大队辅导员工作总结
2015/07/24 职场文书
Nginx使用X-Accel-Redirect实现静态文件下载的统计、鉴权、防盗链、限速等
2021/04/04 Servers
python字典的元素访问实例详解
2021/07/21 Python