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实现在目录中查找指定文件的方法
Nov 11 Python
合并百度影音的离线数据( with python 2.3)
Aug 04 Python
python win32 简单操作方法
May 25 Python
基于Django的python验证码(实例讲解)
Oct 23 Python
Python向Excel中插入图片的简单实现方法
Apr 24 Python
python自动截取需要区域,进行图像识别的方法
May 17 Python
pandas 数据实现行间计算的方法
Jun 08 Python
pycharm执行python时,填写参数的方法
Oct 29 Python
在Python中Dataframe通过print输出多行时显示省略号的实例
Dec 22 Python
Django Form 实时从数据库中获取数据的操作方法
Jul 25 Python
python return逻辑判断表达式实现解析
Dec 02 Python
Python关于__name__属性的含义和作用详解
Feb 19 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
IIS php环境配置PHP5 MySQL5 ZendOptimizer phpmyadmin安装与配置
2008/11/18 PHP
php二维数组转成字符串示例
2014/02/17 PHP
js 输出内容到新窗口具体实现代码
2013/05/31 Javascript
JS实现QQ图片一闪一闪的效果小例子
2013/07/31 Javascript
Jquery实现的一种常用高亮效果示例代码
2014/01/28 Javascript
Javascript核心读书有感之语言核心
2015/02/01 Javascript
js实现简单锁屏功能实例
2015/05/27 Javascript
JavaScript代码性能优化总结(推荐)
2016/05/16 Javascript
JavaScript随机生成颜色的方法
2016/10/15 Javascript
基于jquery实现的鼠标悬停提示案例
2016/12/11 Javascript
简单实现bootstrap选项卡效果
2017/02/08 Javascript
基于jQuery解决ios10以上版本缩放问题
2017/11/03 jQuery
微信小程序checkbox组件使用详解
2018/01/31 Javascript
JS同步、异步、延迟加载的方法
2018/05/05 Javascript
当vue路由变化时,改变导航栏的样式方法
2018/08/22 Javascript
ES6基础之解构赋值(destructuring assignment)
2019/02/21 Javascript
深入理解JavaScript 箭头函数
2019/05/30 Javascript
原生js添加一个或多个类名的方法分析
2019/07/30 Javascript
解决Vue项目打包后打开index.html页面显示空白以及图片路径错误的问题
2019/10/25 Javascript
Vue数据双向绑定底层实现原理
2019/11/22 Javascript
使用vue3重构拼图游戏的实现示例
2021/01/25 Vue.js
[02:53]2018年度DOTA2最佳战队-完美盛典
2018/12/17 DOTA
[01:18:45]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第三场2月1日
2021/03/11 DOTA
Python爬虫实战:分析《战狼2》豆瓣影评
2018/03/26 Python
python障碍式期权定价公式
2019/07/19 Python
python的time模块和datetime模块实例解析
2019/11/29 Python
Python加密模块的hashlib,hmac模块使用解析
2020/01/02 Python
使用python处理题库表格并转化为word形式的实现
2020/04/14 Python
复古服装:RetroStage
2019/05/10 全球购物
彪马俄罗斯官网:PUMA俄罗斯
2019/07/13 全球购物
惠普新加坡官方商店:HP Singapore
2020/04/17 全球购物
外语专业毕业生个人的自荐信
2013/11/19 职场文书
简单租房协议书(范本)
2014/10/13 职场文书
农村党建工作汇报材料
2014/10/27 职场文书
2014年环境整治工作总结
2014/12/10 职场文书
我的中国梦主题班会
2015/08/14 职场文书