程序思路:

此次程序主要是利用PIL(Python Image Libraty)这库,来进行图片的处理。

PIL是一个功能非常强大的python图像处理标准库,但由于PIL只支持python2.7。如今很多python程序员都使用python3.x,所以PIL在之前的基础上分离出来一个分支,另外创建一个Pillow库,以便支持python3.x, 本程序在使用之前确保已经安装了Pillow库。

程序首先把你要分隔的图像读取到一个变量中,然后我们定义了一个 fill_image() 方法,用来填充图像让原本大小不一的图像,重新变为一个长宽相同的正方形图像,方便之后处理。

通过 fill_image() 方法,我们就会得到新的一张正方形图像。随后我们在利用 cut_image() 方法,把图像分隔成 9 张,因为微信朋友圈最多发 9张图片。

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

if __name__ == '__main__':

file_path = "2.jpg" #图片保存的地址

image = Image.open(file_path)

#image.show()

image_new = fill_image(image)

image_list = cut_image(image_new)

save_images(image_list)

如果有兴趣的话可以看一看Pillow库的使用

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

python图像分割重组_通过PYTHON来实现图像分割详解相关推荐

  1. 怎么创建python django项目_创建Django项目图文实例详解

    本文实例讲述了创建Django项目的方法.分享给大家供大家参考,具体如下: 创建Django项目 创建一个HelloDjango项目 GitHub地址:https://github.com/liang ...

  2. python适配器模式角色_适配器模式(Adapter模式)详解

    在现实生活中,经常出现两个对象因接口不兼容而不能在一起工作的实例,这时需要第三者进行适配.例如,讲中文的人同讲英文的人对话时需要一个翻译,用直流电的笔记本电脑接交流电源时需要一个电源适配器,用计算机访 ...

  3. python 时间序列预测_使用Python进行动手时间序列预测

    python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...

  4. python 概率分布模型_使用python的概率模型进行公司估值

    python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...

  5. pythondifflib详解_用python标准库difflib比较两份文件的异同详解

    [需求背景] 有时候我们要对比两份配置文件是不是一样,或者比较两个文本是否异样,可以使用linux命令行工具diff a_file b_file,但是输出的结果读起来不是很友好.这时候使用python ...

  6. python os模块安装方法_基于python中pygame模块的Linux下安装过程(详解)

    一.使用pip安装Python包 大多数较新的Python版本都自带pip,因此首先可检查系统是否已经安装了pip.在Python3中,pip有时被称为pip3. 1.在Linux和OS X系统中检查 ...

  7. python 生成器装饰器_对Python生成器、装饰器、递归的使用详解

    1.Python生成器表达式 1).Python生成器表达式 语法格式: (expr for iter_var in iterable) (expr for iter_var in iterable ...

  8. python二元多次函数拟合_对python实现二维函数高次拟合的示例详解

    在参加"数据挖掘"比赛中遇到了关于函数高次拟合的问题,然后就整理了一下源码,以便后期的学习与改进. 在本次"数据挖掘"比赛中感觉收获最大的还是对于神经网络的认识 ...

  9. python数组相减_对Python 中矩阵或者数组相减的法则详解

    对Python 中矩阵或者数组相减的法则详解 最近在做编程练习,发现有些结果的值与答案相差较大,通过分析比较得出结论,大概过程如下: 定义了一个计算损失的函数: def error(yhat,labe ...

最新文章

  1. HPE品牌存储为啥高调? 因为“王炸”多啊!
  2. #20145238荆玉茗《网络对抗》-逆向及Bof进阶实践
  3. 新建Java文件的 文档注释
  4. python的快速入门-Python快速入门,你想要的就在这里了!
  5. Linux cut用法
  6. elk中kibana中如何显示写入elasticsearch的数据
  7. 自己写的一段预测双色球号码的Java代码
  8. 1.9 编程基础之顺序查找 08 白细胞计数 python
  9. Shell组件的返回码,0为成功,其他为失败.
  10. 如何安全地创建嵌套目录?
  11. ActiveMQ实现负载均衡+高可用部署方案 -转载
  12. 【洛谷P1256】公路修建(问题分析+最小生成树prim法)
  13. 判断是否素数 c语言,判断是否是素数 C语言
  14. 局域网互传文件工具_win10一键共享工具免费版(快速解决局域网文件共享问题)官方版...
  15. Django超市仓库管理系统
  16. 一名合格的Web前端工程师需要具备的8项技能!
  17. python打卡以及Linux自动运行python文件
  18. php jwt设置有效期,07-如何设置JWT的过期时间
  19. 船舶强度与结构设计大作业二matlab,船舶强度与结构设计题目
  20. 桌面计算机图标黄色,电脑桌面图标出现黄色小锁的解决方法教程[多图]

热门文章

  1. java 项目加载dll文件,在eclipse java项目中加载dll文件
  2. STM32-USART发送程序
  3. mysql 连接 查询 连表查询
  4. 8.Deep Interest Evolution Network for Click-Through Rate Prediction论文详解
  5. 搭建 Hadoop 伪分布式环境
  6. 人脸对齐--Unconstrained Face Alignment without Face Detection
  7. Python-anaconda-Spyder使用matplotlib画图无法显示报错解决:Figures now render in the Plots pane by default. To mak
  8. 烟雾检测电路c语言程序,烟雾报警器电路图大全(六款模拟电路设计原理图详解)...
  9. 怎么将文件转换成linux文件,Linux将DOS文件格式转换成UNIX文件格式的方法
  10. Python3+Selenium3 之滚动条操作实例与单选框的实例演示