python实现图片九宫格分割的示例


Posted in Python onApril 25, 2021

简介

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

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

实现原理

实现原理非常简单,那就是利用PIL库对原图不断画小区域然后切下来存储成新的小图片。

假设每一个格子的宽和高分别是w、h,那么第row行(从0开始计数),第col列(从0开始计数)的格子左上角坐标和右下角坐标分别是(col * w, row * h),(col * w + w, r * h + h)。

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() # 执行主循环

运行结果

界面图像

python实现图片九宫格分割的示例

在文本框中输入图片地址,点击“点击生成九宫格图片”

python实现图片九宫格分割的示例

以上就是python实现图片九宫格分割的示例的详细内容,更多关于python 图片九宫格分割的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python Deque 模块使用详解
Jul 04 Python
Python的Django框架下管理站点的基本方法
Jul 17 Python
Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程
Jul 11 Python
详解用Python处理HTML转义字符的5种方式
Dec 27 Python
Python使用sort和class实现的多级排序功能示例
Aug 15 Python
PyQt5实现简单数据标注工具
Mar 18 Python
Django中间件基础用法详解
Jul 18 Python
Python字符串、列表、元组、字典、集合的补充实例详解
Dec 20 Python
pycharm设置python文件模板信息过程图解
Mar 10 Python
使用Python pip怎么升级pip
Aug 11 Python
pycharm Tab键设置成4个空格的操作
Feb 26 Python
Python下opencv使用hough变换检测直线与圆
Jun 18 Python
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
Apr 25 #Python
浅谈Python项目的服务器部署
Apr 25 #Python
Python Socket编程详解
Apr 25 #Python
Python Django 后台管理之后台模型属性详解
如何用python反转图片,视频
python基于tkinter制作m3u8视频下载工具
用python自动生成日历
You might like
迅雷下载《中学科技》怀旧期刊下载
2021/02/27 无线电
这东西价格,可以买几台TECSUN S-2000
2021/03/02 无线电
PHP操作mysql函数详解,mysql和php交互函数
2011/05/19 PHP
PHP文件去掉PHP注释空格的函数分析(PHP代码压缩)
2013/07/02 PHP
php生成N个不重复的随机数实例
2013/11/12 PHP
使用php检测用户当前使用的浏览器是否为IE浏览器
2013/12/03 PHP
php calender(日历)二个版本代码示例(解决2038问题)
2013/12/24 PHP
PHP OPP机制和模式简介(抽象类、接口和契约式编程)
2014/06/09 PHP
一个经典的PHP文件上传类分享
2014/11/18 PHP
php使用str_shuffle()函数生成随机字符串的方法分析
2017/02/17 PHP
显示、隐藏密码
2006/07/01 Javascript
JavaScript 动态添加表格行 使用模板、标记
2009/10/24 Javascript
两个select多选模式的选项相互移动(示例代码)
2014/01/11 Javascript
js统计页面的来访次数实现代码
2014/05/09 Javascript
js加减乘除丢失精度问题解决方法
2014/05/16 Javascript
asp.net+js实现金额格式化
2015/02/27 Javascript
jQuery实现简单的点赞效果
2020/05/29 Javascript
设置jQueryUI DatePicker默认语言为中文
2016/06/04 Javascript
jQuery 全选 全部选 反选 实现代码
2016/08/17 Javascript
[00:57]林俊杰助阵DOTA2亚洲邀请赛
2015/01/28 DOTA
python基础教程之popen函数操作其它程序的输入和输出示例
2014/02/10 Python
python比较两个列表大小的方法
2015/07/11 Python
详解python调度框架APScheduler使用
2017/03/28 Python
一些Centos Python 生产环境的部署命令(推荐)
2018/05/07 Python
python实现自动发送邮件
2018/06/20 Python
Python2和Python3之间的str处理方式导致乱码的讲解
2019/01/03 Python
Python XlsxWriter模块Chart类用法实例分析
2019/03/11 Python
Python 3 判断2个字典相同
2019/08/06 Python
Python 基于wxpy库实现微信添加好友功能(简洁)
2019/11/29 Python
localStorage 设置过期时间的方法实现
2018/12/21 HTML / CSS
高中生学习生活的自我评价
2013/11/27 职场文书
行政人事经理职位说明书
2014/03/05 职场文书
2014年医药代表工作总结
2014/11/22 职场文书
检讨书怎么写
2015/05/07 职场文书
2019年新郎保证书3篇
2019/10/17 职场文书
Python采集壁纸并实现炫轮播
2022/04/30 Python