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编程中的运用实例
Jun 26 Python
Scrapy基于selenium结合爬取淘宝的实例讲解
Jun 13 Python
django2用iframe标签完成网页内嵌播放b站视频功能
Jun 20 Python
解决Shell执行python文件,传参空格引起的问题
Oct 30 Python
python rsa实现数据加密和解密、签名加密和验签功能
Sep 18 Python
win10安装tesserocr配置 Python使用tesserocr识别字母数字验证码
Jan 16 Python
pycharm设置默认的UTF-8编码模式的方法详解
Jun 01 Python
python RSA加密的示例
Dec 09 Python
python模块内置属性概念及实例
Feb 18 Python
python元组拆包实现方法
Feb 28 Python
python异常中else的实例用法
Jun 15 Python
Python turtle实现贪吃蛇游戏
Jun 18 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数学运算
2011/12/30 PHP
如何用php获取程序执行的时间
2013/06/09 PHP
PHP5.3安装Zend Guard Loader图文教程
2014/09/29 PHP
PHP版本常用的排序算法汇总
2015/12/20 PHP
表格单元格交错着色实现思路及代码
2013/04/01 Javascript
jquery 添加节点的几种方法介绍
2013/09/04 Javascript
jquery实现焦点图片随机切换效果的方法
2015/03/12 Javascript
JS实现的简洁二级导航菜单雏形效果
2015/10/13 Javascript
JavaScript类型系统之Object详解
2016/01/07 Javascript
基于JavaScript代码实现兼容各浏览器的设为首页和加入收藏
2016/01/07 Javascript
JavaScript中双符号的运算详解
2017/03/12 Javascript
socket.io与pm2(cluster)集群搭配的解决方案
2017/06/02 Javascript
BootStrap Table复选框默认选中功能的实现代码(从数据库获取到对应的状态进行判断是否为选中状态)
2017/07/11 Javascript
分分钟学会vue中vuex的应用(入门教程)
2017/09/14 Javascript
jquery实现左右轮播切换效果
2018/01/01 jQuery
微信小程序三级联动选择器使用方法
2020/05/19 Javascript
Vue 按键修饰符处理事件的方法
2018/05/04 Javascript
css配合JavaScript实现tab标签切换效果
2018/10/11 Javascript
Vue 使用beforeEach实现登录状态检查功能
2019/10/31 Javascript
微信小程序连接服务器展示MQTT数据信息的实现
2020/07/14 Javascript
jQuery zTree如何改变指定节点文本样式
2020/10/16 jQuery
自动化Nginx服务器的反向代理的配置方法
2015/06/28 Python
Python字符串处理实现单词反转
2017/06/14 Python
python 读取目录下csv文件并绘制曲线v111的方法
2018/07/06 Python
Flask模板引擎之Jinja2语法介绍
2019/06/26 Python
python垃圾回收机制(GC)原理解析
2019/12/30 Python
Python标准库json模块和pickle模块使用详解
2020/03/10 Python
HTML5 FormData 方法介绍以及实现文件上传示例
2017/09/12 HTML / CSS
使用HTML5和CSS3制作一个模态框的示例
2018/03/07 HTML / CSS
斯洛伐克时尚服装网上商店:Cellbes
2016/10/20 全球购物
ghd官网:英国ghd直发器品牌
2018/05/04 全球购物
计算机专业学生求职信分享
2013/12/15 职场文书
给酒店员工的表扬信
2014/01/11 职场文书
2014教师个人自我评价范文
2014/09/13 职场文书
2014年中学生检讨书大全
2014/10/09 职场文书
JavaScript 事件捕获冒泡与捕获详情
2021/11/11 Javascript