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 相关文章推荐
Python删除指定目录下过期文件的2个脚本分享
Apr 10 Python
简述Python中的进程、线程、协程
Mar 18 Python
Python的re模块正则表达式操作
May 25 Python
Python中的CSV文件使用"with"语句的方式详解
Oct 16 Python
使用python远程操作linux过程解析
Dec 04 Python
Python2与Python3关于字符串编码处理的差别总结
Sep 07 Python
Visual Studio code 配置Python开发环境
Sep 11 Python
Django如何使用asyncio协程和ThreadPoolExecutor多线程
Oct 12 Python
python 匿名函数与三元运算学习笔记
Oct 23 Python
用基于python的appium爬取b站直播消费记录
Apr 17 Python
python实现MD5进行文件去重的示例代码
Jul 09 Python
Python 类,对象,数据分类,函数参数传递详解
Sep 25 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
2014年10个最佳的PHP图像操作库
2014/07/14 PHP
PHP读取CURL模拟登录时生成Cookie文件的方法
2014/11/04 PHP
php使用MySQL保存session会话的方法
2015/06/26 PHP
IE本地存储userdata的一个bug说明
2010/07/01 Javascript
js实现内容显示并使用json传输数据
2016/03/16 Javascript
基于Bootstrap重置输入框内容按钮插件
2016/05/12 Javascript
【经典源码收藏】jQuery实用代码片段(筛选,搜索,样式,清除默认值,多选等)
2016/06/07 Javascript
详解JavaScript的闭包、IIFE、apply、函数与对象
2016/12/21 Javascript
Easyui ueditor 整合解决不能编辑的问题(推荐)
2017/06/25 Javascript
vue component组件使用方法详解
2017/07/14 Javascript
详解webpack性能优化——DLL
2017/10/20 Javascript
vuejs实现本地数据的筛选分页功能思路详解
2017/11/15 Javascript
详解vue项目接入微信JSSDK的坑
2018/12/14 Javascript
JavaScript禁用右键单击优缺点分析
2019/01/20 Javascript
vue+Element实现搜索关键字高亮功能
2019/05/28 Javascript
node.js使用zlib模块进行数据压缩和解压操作示例
2020/02/12 Javascript
vue2.0实现列表数据增加和删除
2020/06/17 Javascript
[01:18:43]2014 DOTA2华西杯精英邀请赛5 24 iG VS DK
2014/05/25 DOTA
Python中装饰器的一个妙用
2015/02/08 Python
python使用socket向客户端发送数据的方法
2015/04/29 Python
python解决方案:WindowsError: [Error 2]
2016/08/28 Python
对python中的logger模块全面讲解
2018/04/28 Python
Tensorflow 查看变量的值方法
2018/06/14 Python
python如何爬取个性签名
2018/06/19 Python
用python统计代码行的示例(包括空行和注释)
2018/07/24 Python
python实现PDF中表格转化为Excel的方法
2020/06/16 Python
iostream与iostream.h的区别
2015/01/16 面试题
餐饮主管岗位职责
2013/12/10 职场文书
高二美术教学反思
2014/01/14 职场文书
烹饪大赛策划方案
2014/05/26 职场文书
室内设计专业自荐信
2014/05/31 职场文书
夫妻双方自愿离婚协议书
2014/10/24 职场文书
2014年学校财务工作总结
2014/12/06 职场文书
质量承诺书格式范文
2015/04/28 职场文书
新闻稿怎么写
2015/07/18 职场文书
详解Python函数print用法
2021/06/18 Python