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中去空格函数的用法
Aug 21 Python
Python中使用摄像头实现简单的延时摄影技术
Mar 27 Python
python下调用pytesseract识别某网站验证码的实现方法
Jun 06 Python
Caffe均值文件mean.binaryproto转mean.npy的方法
Jul 09 Python
Python 实现「食行生鲜」签到领积分功能
Sep 26 Python
详解Python中pandas的安装操作说明(傻瓜版)
Apr 08 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
Apr 27 Python
Python连接mysql数据库及简单增删改查操作示例代码
Aug 03 Python
python与c语言的语法有哪些不一样的
Sep 13 Python
Python中生成ndarray实例讲解
Feb 22 Python
Python爬虫爬取ts碎片视频+验证码登录功能
Feb 22 Python
Python3.10的一些新特性原理分析
Sep 15 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
php防止用户重复提交表单
2015/11/02 PHP
PHP单链表的实现代码
2016/07/05 PHP
php实现批量上传数据到数据库(.csv格式)的案例
2017/06/18 PHP
为调试JavaScript添加输出窗口的代码
2010/02/07 Javascript
GreyBox技术总结(转)
2010/11/23 Javascript
实现51Map地图接口(示例代码)
2013/11/22 Javascript
Window.Open如何在同一个标签页打开
2014/06/20 Javascript
javascript每日必学之继承
2016/02/23 Javascript
JavaScript浏览器对象之一Window对象详解
2016/06/03 Javascript
js html5 css俄罗斯方块游戏再现
2016/10/17 Javascript
AngularJS指令用法详解
2016/11/02 Javascript
微信小程序实现表单校验功能
2020/03/30 Javascript
ES6学习教程之对象字面量详解
2017/10/09 Javascript
微信小程序实现图片压缩功能
2018/01/26 Javascript
vue 使用自定义指令实现表单校验的方法
2018/08/28 Javascript
将Vue组件库更换为按需加载的方法步骤
2020/05/06 Javascript
vue实现在进行增删改操作后刷新页面
2020/08/05 Javascript
Element-ui el-tree新增和删除节点后如何刷新tree的实例
2020/08/31 Javascript
跟老齐学Python之玩转字符串(1)
2014/09/14 Python
Django的session中对于用户验证的支持
2015/07/23 Python
Python时间模块datetime、time、calendar的使用方法
2016/01/13 Python
python爬虫实战之最简单的网页爬虫教程
2017/08/13 Python
大家都说好用的Python命令行库click的使用
2019/11/07 Python
Pytorch 之修改Tensor部分值方式
2019/12/27 Python
浅谈sklearn中predict与predict_proba区别
2020/06/28 Python
爱尔兰电子产品购物网站:Komplett.ie
2018/04/04 全球购物
流行文化收藏品:Sideshow(DC漫画,星球大战,漫威)
2019/03/17 全球购物
生物制药自我鉴定
2014/01/25 职场文书
互联网创业计划书写作技巧攻略
2014/03/23 职场文书
2014年个人工作总结报告
2014/11/27 职场文书
教师业务学习材料
2014/12/16 职场文书
2016教师廉洁从教心得体会
2016/01/13 职场文书
基于python制作简易版学生信息管理系统
2021/04/20 Python
浅谈pytorch中stack和cat的及to_tensor的坑
2021/05/20 Python
Python中rapidjson参数校验实现
2021/07/25 Python
Python可视化神器pyecharts绘制水球图
2022/07/07 Python