Python切割九宫格图

  • 朋友圈经常有人发九宫格图片,但那是使用特定的图片软件制成的或就是九章不同的照片

  • 本次我们用 Python 来制一张

    • 九宫格主体是一个 3x3 的正方形矩阵

      有9张对应的图片组成

    • 一般的软件,在遇到非矩阵型图片时难以完成重组,且有多张图片组成

    • 本次利用 Python 的 PIL 库 将一张非正方形的矩阵,切割重组成9张正方形矩阵图

    • 朋友圈可直接发送九宫格(如下图)与一张图片切割而成

# -*- coding: utf-8 -*-""" 将一张图片填充为正方形后切为9张图"""import osfrom tkinter import filedialogfrom PIL import Imagefrom future.moves import tkinterdef open_img():    """    打开图片    :return:    """    root = tkinter.Tk()  # 创建一个Tkinter.Tk()实例    root.withdraw()  # 将Tkinter.Tk()实例隐藏    default_dir = r"文件路径"    file_path = filedialog.askopenfilename(title=u'选择文件', initialdir=(os.path.expanduser(default_dir)))    if len(file_path) != 0:        image = Image.open(file_path)        fill_image(image)    else:        SystemExit()def fill_image(img):    """    将图片填充为正方形    :param img: 图片    :return:    """    width, height = img.size    # 选取长和宽中较大值作为新图片的    new_image_length = width if width > height else height    # 生成新图片[白底]    new_image = Image.new(img.mode, (new_image_length, new_image_length), color='white')    # 将之前的图粘贴在新图上,居中    if width > height:  # 原图宽大于高,则填充图片的竖直维度        # (x,y)二元组表示粘贴上图相对下图的起始位置        new_image.paste(img, (0, int((new_image_length - height) / 2)))    else:        new_image.paste(img, (int((new_image_length - width) / 2), 0))    cut_image(new_image)def cut_image(img):    """    切图    :param img: 填充成方形后的图片    :return:    """    width, height = img.size    item_width = int(width / 3)    box_list = []    for i in range(0, 3):  # 两重循环,生成9张图片基于原图的位置        for j in range(0, 3):            box = (j * item_width, i * item_width, (j + 1) * item_width, (i + 1) * item_width)            box_list.append(box)    img_list = [img.crop(box) for box in box_list]    save_images(img_list)def save_images(img_list):    """    保存切割完成的图片    :param img_list: 切割后的图片列表    :return:    """    index = 1    files_path = 'Pic'    # 若文件夹不存在,则创建    if not os.path.exists(files_path):        os.makedirs(files_path)    for img in img_list:        img.save('./Pic/' + str(index) + '.png', 'PNG')        index += 1    print('完成')if __name__ == '__main__':    open_img()

python 切割_Python切割九宫格图相关推荐

  1. python作品_Python爬取图虫网摄影作品

    准备 要爬的网站是图虫网 工具:python 2.7,BeautifulSoup4 注意:BeautifulSoup4为第三方类库,如果在cmd下用pip安装报错,可直接去官网下载,解压后拷贝到pyt ...

  2. python深度优先_python数据结构之图深度优先和广度优先实例详解

    本文实例讲述了python数据结构之图深度优先和广度优先用法.分享给大家供大家参考.具体如下: 首先有一个概念:回溯 回溯法(探索与回溯法)是一种选优搜索法,按选优条件向前搜索,以达到目标.但当探索到 ...

  3. Python切割九宫格图

    Python切割九宫格图 朋友圈经常有人发九宫格图片,但那是使用特定的图片软件制成的或就是九章不同的照片 本次我们用 Python 来制一张 九宫格主体是一个 3x3 的正方形矩阵 有9张对应的图片组 ...

  4. python语言编写一个生成九宫格图片的代码_Python切割图片成九宫格的示例代码

    这篇文字讲述如何使用Python把一张完整的大图切割成9份小图片,制作朋友圈九宫格图文分享. 原图如下: 我们想要利用这张图制作高逼格的九宫格朋友圈分享. 达到类似于这样的效果: 实现原理非常简单,那 ...

  5. python切割图片地图切图脚本

    python切割图片地图切图脚本 ''' 读入一个图片,切成指定数目个小图片(64个) 文件夹名out ''' from PIL import Image import sys,os cut_num ...

  6. 利用Unity自带的合图切割功能将合图切割成子图

    转载的,牛人无处不在,我还太渺小 虽然目前网上具有切割合图功能的工具不少,但大部分都是自动切割或者根据plist之类的合图文件切割的, 这种切割往往不可自己微调或者很难维调,导致效果不理想. 今天逛贴 ...

  7. wincc报表日报表实例_工作系统二次开发二Python加工原膜切割日报表数据实例

    #工作系统二次开发二Python加工原膜切割日报表数据实例 #当查询一个或多个工作令后在表格展示数据前按要求对数据进行二次处理,处理要求看如下 #1.加工单号和母卷物料编号相同则把除第一行外的领料有关 ...

  8. python txt文件切割

    python txt文件切割 看了小甲鱼的视频,自己操作仍有很多问题 在此,以博客形式记录 题目: 将txt文件中的小客服与小甲鱼的对话进行切割,并以========为界限,将其分为几个文件,将对话内 ...

  9. python 子图_python 实现在一张图中绘制一个小的子图方法

    有时候为了直观展现图的信息,可以在大图中添加小子图的方式进行数据分析,如下图所示: 具体的代码如下:该图连接了数据库,当然重要的不是数据展示,而是添加子图的方法. import matplotlib. ...

  10. python怎么存为动图_Python将视频或者动态图gif逐帧保存为图片的方法

    本文是基于opencv将视频和动态图gif保存为图像帧.可以根据输入视频格式的不同,修改第21行. 对动图的处理不同于视频,PIL库包含对图像序列的基本支持.当打开gif图像时,自动加载第一帧.当图像 ...

最新文章

  1. 跟我学Spring3(8.2):对ORM的支持之集成Hibernate3
  2. 完整的一次 HTTP 请求响应过程(二)
  3. IOS开发基础之核心动画 基础动画、关键帧、组动画案例
  4. nlp中的经典深度学习模型(二)
  5. android 购票代码,android完美电影购票源码
  6. 吴恩达机器学习【第三天】线性代数基础知识
  7. java语音读字符串_Android Java文本到语音查看额外的字符串信息
  8. 在MacOS系统中如何自定义屏幕保护程序?
  9. android 页面跳转代码
  10. php采集规则编写,织梦dedecms图片采集规则的编写方法
  11. Spooling Directory Source 使用
  12. mysql insert返回值_各种SQL Insert 返回值
  13. Allegro PCB Design GXL (legacy) 设置自动保存brd文件
  14. AliCDN,盛开在云端的花朵
  15. IB学霸分享学习经验(家长如何助孩子一臂之力)
  16. 弗里曼(Freeman)链码
  17. 二叉搜索树——插入、查找、删除
  18. 如何选择正确的RF连接器
  19. csgo怎么绑定一键跳投_CSGO投掷物一键跳投的设置方法
  20. Python spider (二) Requests Lxml bs4

热门文章

  1. 【人脸表情识别】基于matlab GUI LBP+SVM脸部动态特征人脸表情识别【含Matlab源码 1369期】
  2. 【优化电价】基于matlab内点法求解实时电价最优问题【含Matlab源码 1161期】
  3. 【红绿灯识别】基于matlab红绿灯识别【含Matlab源码 1068期】
  4. 【图像增强】基于matlab频域+密度分割+灰度级-彩色变换伪彩色图像增强【含Matlab源码 1011期】
  5. ai人工智能最新相关消息_我如何了解最新的AI研究
  6. github下载的代码、怎么使用 python_Python学习20-补充内容之GitHub安装使用
  7. python中wordcloud函数不同形状云图_10行Python代码生成任意形状的文字云图
  8. pg数据库生成随机时间_postgreSQL自动生成随机数值的实例
  9. 整站php_小白同学的福利:PHP常见面试题(附答案)
  10. struts mysql_Struts2连接MySQL数据库(Struts2 MySQL)