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使用内存zipfile对象在内存中打包文件示例
Apr 30 Python
python轻松实现代码编码格式转换
Mar 26 Python
Python的GUI框架PySide的安装配置教程
Feb 16 Python
Linux下为不同版本python安装第三方库
Aug 31 Python
Python中import机制详解
Nov 14 Python
python matplotlib中文显示参数设置解析
Dec 15 Python
python 生成图形验证码的方法示例
Nov 11 Python
基于python的socket实现单机五子棋到双人对战
Mar 24 Python
python实现提取str字符串/json中多级目录下的某个值
Feb 27 Python
CentOS 7如何实现定时执行python脚本
Jun 24 Python
python 基于selenium实现鼠标拖拽功能
Dec 24 Python
Django项目如何获得SSL证书与配置HTTPS
Apr 30 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
yii权限控制的方法(三种方法)
2015/12/28 PHP
基于php实现的php代码加密解密类完整实例
2016/10/12 PHP
thinkPHP5分页功能实现方法分析
2017/10/25 PHP
jquery退出each循环的写法
2014/02/26 Javascript
AngularJS入门教程之Hello World!
2014/12/06 Javascript
JavaScript设计模式之代理模式介绍
2014/12/28 Javascript
javaScript中push函数用法实例分析
2015/06/08 Javascript
Css3制作变形与动画效果
2015/07/24 Javascript
JavaScript函数的一些注意要点小结及js匿名函数
2015/11/10 Javascript
自动完成的搜索框javascript实现
2016/02/26 Javascript
移动端界面的适配
2017/01/11 Javascript
详解javascript常用工具类的封装
2018/01/30 Javascript
jQuery仿移动端支付宝键盘的实现代码
2018/08/15 jQuery
Element-UI踩坑之Pagination组件的使用
2018/10/29 Javascript
layDate插件设置开始和结束时间
2018/11/15 Javascript
分享JS表单验证源码(带错误提示及密码等级)
2020/01/05 Javascript
如何在JavaScript中创建具有多个空格的字符串?
2020/02/23 Javascript
详解Vue 数据更新了但页面没有更新的 7 种情况汇总及延伸总结
2020/05/28 Javascript
详解Vue的组件中data选项为什么必须是函数
2020/08/17 Javascript
[02:29]DOTA2英雄基础教程 陈
2013/12/17 DOTA
Python中isnumeric()方法的使用简介
2015/05/19 Python
python实现狄克斯特拉算法
2019/01/17 Python
python操作kafka实践的示例代码
2019/06/19 Python
PyQt5基本控件使用之消息弹出、用户输入、文件对话框的使用方法
2019/08/06 Python
python实现定时发送邮件
2020/12/23 Python
canvas 阴影和图形变换的示例代码
2018/01/02 HTML / CSS
澳洲女装时尚在线:Blue Bungalow
2018/05/05 全球购物
Stutterheim瑞典:瑞典高级外套时装品牌
2019/06/24 全球购物
办公室副主任岗位职责
2013/11/25 职场文书
小小商店教学反思
2014/04/27 职场文书
酒店员工辞职信范文
2015/02/28 职场文书
2015年社区文体活动总结
2015/03/25 职场文书
毕业论文答辩开场白
2015/05/27 职场文书
2015年教学副校长工作总结
2015/07/22 职场文书
2019年员工旷工保证书!
2019/06/28 职场文书
nginx搭建图片服务器的过程详解(root和alias的区别)
2021/03/31 Servers