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打开url并按指定块读取网页内容的方法
Apr 29 Python
Python实现SVN的目录周期性备份实例
Jul 17 Python
python 接口_从协议到抽象基类详解
Aug 24 Python
Anaconda多环境多版本python配置操作方法
Sep 12 Python
Python各类图像库的图片读写方式总结(推荐)
Feb 23 Python
对python For 循环的三种遍历方式解析
Feb 01 Python
python简单验证码识别的实现方法
May 10 Python
django一对多模型以及如何在前端实现详解
Jul 24 Python
python设置环境变量的作用整理
Feb 17 Python
Pycharm连接远程服务器过程图解
Apr 30 Python
python实现canny边缘检测
Sep 14 Python
Python 正则模块详情
Nov 02 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通过header实现文本文件下载的代码
2010/08/08 PHP
PHP中通过语义URL防止网站被攻击的方法分享
2011/09/08 PHP
ThinkPHP之M方法实例详解
2014/06/20 PHP
PHP链接MySQL的常用扩展函数
2014/10/23 PHP
Yii框架结合sphinx,Ajax实现搜索分页功能示例
2016/10/18 PHP
浅谈PHP之ThinkPHP框架使用详解
2020/07/21 PHP
JavaScript DOM学习第四章 getElementByTagNames
2010/02/19 Javascript
JavaScript页面刷新与弹出窗口问题的解决方法
2010/03/02 Javascript
JQuery页面图片切换和新闻列表滚动效果的具体实现
2013/09/26 Javascript
通过action传过来的值在option获取进行验证的方法
2013/11/14 Javascript
Bootstrap 附加导航(Affix)插件实例详解
2016/06/01 Javascript
实现一个简单的vue无限加载指令方法
2017/01/10 Javascript
详解如何在angular2中获取节点
2017/11/23 Javascript
关于JS模块化的知识点分享
2019/10/16 Javascript
JavaScript面向对象核心知识与概念归纳整理
2020/05/09 Javascript
Nuxt pages下不同的页面对应layout下的页面布局操作
2020/11/05 Javascript
小程序实现列表倒计时功能
2021/01/29 Javascript
[03:55]TI9战队采访——TNC Predator
2019/08/22 DOTA
Python3操作SQL Server数据库(实例讲解)
2017/10/21 Python
Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例
2018/01/15 Python
pyqt5自定义信号实例解析
2018/01/31 Python
基于spring boot 日志(logback)报错的解决方式
2020/02/20 Python
python爬取”顶点小说网“《纯阳剑尊》的示例代码
2020/10/16 Python
python matlab库简单用法讲解
2020/12/31 Python
韩国三星集团旗下时尚品牌官网:SSF SHOP
2016/08/02 全球购物
俄罗斯首家面向中国消费者的一站式购物网站:Wruru
2020/05/08 全球购物
《小小雨点》教学反思
2014/02/18 职场文书
总经理的岗位职责
2014/02/23 职场文书
三项教育活动实施方案
2014/03/30 职场文书
高中学生自我评价范文
2014/09/23 职场文书
银行贷款收入证明
2014/10/17 职场文书
小学生安全教育广播稿
2014/10/20 职场文书
升职感谢信
2015/01/22 职场文书
校运会宣传稿大全
2015/07/23 职场文书
java多态注意项小结
2021/10/16 Java/Android
Python中递归以及递归遍历目录详解
2021/10/24 Python