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实现配置文件备份的方法
Jul 30 Python
Python打包文件夹的方法小结(zip,tar,tar.gz等)
Sep 18 Python
python实现最长公共子序列
May 22 Python
python 批量解压压缩文件的实例代码
Jun 27 Python
使用python画社交网络图实例代码
Jul 10 Python
Django 过滤器汇总及自定义过滤器使用详解
Jul 19 Python
Python使用tkinter模块实现推箱子游戏
Oct 08 Python
python实现快递价格查询系统
Mar 03 Python
django 模版关闭转义方式
May 14 Python
Python实现JS解密并爬取某音漫客网站
Oct 23 Python
python中用ggplot绘制画图实例讲解
Jan 26 Python
聊聊python在linux下与windows下导入模块的区别说明
Mar 03 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小经验:解析preg_match与preg_match_all 函数
2013/06/29 PHP
yii实现图片上传及缩略图生成的方法
2014/12/04 PHP
tp5框架使用composer实现日志记录功能示例
2019/01/10 PHP
PHP强制转化的形式整理
2020/05/22 PHP
FLASH 广告之外的链接
2008/12/16 Javascript
javascript getElementsByName()的用法说明
2009/07/31 Javascript
javascript中关于&& 和 || 表达式的小技巧分享
2015/04/10 Javascript
javascript中返回顶部按钮的实现
2015/05/05 Javascript
Jquery常用的方法汇总
2015/09/01 Javascript
JS传值出现中文参数乱码的解决方法
2016/06/30 Javascript
详解网站中图片日常使用以及优化手法
2017/01/09 Javascript
jQuery+vue.js实现的九宫格拼图游戏完整实例【附源码下载】
2017/09/12 jQuery
vue中实现移动端的scroll滚动方法
2018/03/03 Javascript
React Navigation 使用中遇到的问题小结
2018/05/08 Javascript
解决jquery有正确返回值但不执行success函数的问题
2018/08/20 jQuery
原生js添加一个或多个类名的方法分析
2019/07/30 Javascript
layui-select动态选中值的例子
2019/09/23 Javascript
如何解决jQuery 和其他JS库的冲突
2020/06/22 jQuery
JS实现联想、自动补齐国家或地区名称的功能
2020/07/07 Javascript
Node.js fs模块原理及常见用途
2020/10/22 Javascript
jQuery实现简单评论区功能
2020/10/26 jQuery
python实现井字棋游戏
2020/03/30 Python
python执行CMD指令,并获取返回的方法
2018/12/19 Python
Python_查看sqlite3表结构,查询语句的示例代码
2019/07/17 Python
python 元组的使用方法
2020/06/09 Python
使用CSS3美化HTML表单的技巧演示
2016/05/17 HTML / CSS
使用canvas压缩图片大小的方法示例
2019/08/02 HTML / CSS
加拿大知名的国际儿童品牌:Hatley
2016/11/09 全球购物
伦敦著名的运动鞋综合商店:Footpatrol
2019/03/25 全球购物
新加坡领先的在线生活方式和杂货购物网站:EAMART
2019/04/02 全球购物
促销活动总结怎么写
2014/06/25 职场文书
行政执法作风整顿剖析材料
2014/10/11 职场文书
高考学习决心书
2015/02/04 职场文书
2015年小学师德师风建设工作总结
2015/10/23 职场文书
五年级作文之劳动作文
2019/11/12 职场文书
docker-compose部署Yapi的方法
2022/04/08 Servers