python实现图片九宫格分割

 更新时间:2019年07月19日 17:17:01   转载 作者:mico_cmm  
一张图片分成的九宫图,大家知道是怎么做到吗?这篇文章就为大家详细介绍了python实现图片九宫格分割功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

大家都知道在微信朋友圈或者微博以及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实现图片九宫格分割

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 三步实现Django Paginator分页的方法

    三步实现Django Paginator分页的方法

    这篇文章主要介绍了三步实现Django Paginator分页的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • Python3.6连接Oracle数据库的方法详解

    Python3.6连接Oracle数据库的方法详解

    这篇文章主要介绍了Python3.6连接Oracle数据库的方法,较为详细的分析了cx_Oracle模块安装及Python3.6使用cx_Oracle模块操作Oracle数据库的具体操作步骤与相关注意事项,需要的朋友可以参考下
    2018-05-05
  • 《Python学习手册》学习总结

    《Python学习手册》学习总结

    本篇文章是读者朋友在学习了《Python学习手册》这本书以后,总结出的学习心得,值得大家参考学习。
    2018-01-01
  • python3 反射的四种基本方法解析

    python3 反射的四种基本方法解析

    这篇文章主要介绍了python3 反射的四种基本方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Python首次安装后运行报错(0xc000007b)的解决方法

    Python首次安装后运行报错(0xc000007b)的解决方法

    最近在安装完Python后运行发现居然报错了,错误代码是0xc000007b,于是通过往上查找发现是因为首次安装Python缺乏VC++库的原因,下面通过这篇文章看看如何解决这个问题吧。
    2016-10-10
  • python basemap 画出经纬度并标定的实例

    python basemap 画出经纬度并标定的实例

    今天小编就为大家分享一篇python basemap 画出经纬度并标定的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • 使用Python测试Ping主机IP和某端口是否开放的实例

    使用Python测试Ping主机IP和某端口是否开放的实例

    今天小编就为大家分享一篇使用Python测试Ping主机IP和某端口是否开放的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • python为Django项目上的每个应用程序创建不同的自定义404页面(最佳答案)

    python为Django项目上的每个应用程序创建不同的自定义404页面(最

    这篇文章主要介绍了python为Django项目上的每个应用程序创建不同的自定义404页面,本文给出了最佳答案,大家可以跟随小编一起学习下
    2020-03-03
  • 通过实例简单了解Python中yield的作用

    通过实例简单了解Python中yield的作用

    这篇文章主要介绍了通过实例简单了解Python中yield的作用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Python实现爬虫爬取NBA数据功能示例

    Python实现爬虫爬取NBA数据功能示例

    这篇文章主要介绍了Python实现爬虫爬取NBA数据功能,涉及Python针对URL模块、字符串、列表遍历、Excel写入等相关操作技巧,需要的朋友可以参考下
    2018-05-05

最新评论