经常看到朋友圈或者空间里有朋友发布照片时,将朋友圈的照片切分为九宫格,参考了一些大神的博客资料,现整理如下;

将图片分拆成九宫格的思路:

读取图片->填充图片为正方形(fill_image函数)->将图片切分为9张(cut_image函数)->保存图片(save_image)->over

代码实现如下:

from PIL import Image
import sys
#将图片填充为正方形
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.sizeitem_width = int(width / 3)box_list = []# (left, upper, right, lower)for i in range(0,3):#两重循环,生成9张图片基于原图的位置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 = 1for image in image_list:image.save(str(index) + '.jpg')index += 1if __name__ == '__main__':file_path = "微信图片_20180809234441.jpg"image = Image.open(file_path)# image.show()image = fill_image(image)image_list = cut_image(image)save_images(image_list)

效果如下:

参考了二胖大神提供的思路,里面的逻辑很有趣:

1.开始相当于是拿一张白底的图片粘贴到了原图上;

2.切图的时候分成9宫格,的循环写的也非常漂亮

3.代码中出现了很多次for循环的迭代使用:[image.crop(box) for box in box_list],以后自己也要多练习这种写法

感谢,欢迎拍砖~https://mp.weixin.qq.com/s/bnj5oOdL7iDEmIDlA8h8EA

用Python实现将一张图片分成9宫格相关推荐

  1. python把一堆图片分成n份_用Python实现将一张图片分成9宫格的示例

    经常看到朋友圈或者空间里有朋友发布照片时,将朋友圈的照片切分为九宫格,参考了一些大神的博客资料,现整理如下; 将图片分拆成九宫格的思路: 读取图片->填充图片为正方形(fill_image函数) ...

  2. 用python做一张图片_用Python实现将一张图片分成9宫格的示例

    经常看到朋友圈或者空间里有朋友发布照片时,将朋友圈的照片切分为九宫格,参考了一些大神的博客资料,现整理如下; 将图片分拆成九宫格的思路: 读取图片->填充图片为正方形(fill_image函数) ...

  3. python语言编写一个生成九宫格图片的代码_用Python实现将一张图片分成9宫格的示例...

    经常看到朋友圈或者空间里有朋友发布照片时,将朋友圈的照片切分为九宫格,参考了一些大神的博客资料,现整理如下; 将图片分拆成九宫格的思路: 读取图片->填充图片为正方形(fill_image函数) ...

  4. Python网络爬虫开发实战,微博宫格验证码的识别

    本节我们来介绍一下新浪微博宫格验证码的识别,此验证码是一种新型交互式验证码,每个宫格之间会有一条指示连线,指示了我们应该的滑动轨迹,我们需要按照滑动轨迹依次从起始宫格一直滑动到终止宫格才可以完成验证, ...

  5. leetcode 36. 有效的数独 (将 9 * 9 数独划分成 9 宫格 )

    leetcode 36. 有效的数独 判断一个 9x9 的数独是否有效.只需要根据以下规则,验证已经填入的数字是否有效即可. 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. ...

  6. PHP如何把三张图片均匀分布,怎么把一张图片分成9张

    把一张图片分成9张的方法:首先打开Photoshop软件,并打开一张图片:然后将图片裁剪成正方形:接着找到切片工具,选择"划分切片",并将数值设置成"3,3": ...

  7. python图像对比_用python实现对比两张图片的不同

    from PIL import Image from PIL import ImageChops def compare_images(path_one, path_two, diff_save_lo ...

  8. python中特殊变量-python list每三个分成一组python中星号变量的几种特殊用法

    在Python中星号除了用于乘法数值运算和幂运算外,还有一种特殊的用法"在变量前添加单个星号或两个星号",实现多参数的传入或变量的拆解,本文将详细介绍"星号参数" ...

  9. python如何放一张图片上去_python opencv把一张图片嵌入(叠加)到另一张图片上的实现代码...

    python opencv把一张图片嵌入(叠加)到另一张图片上 1.背景: 最近做了个烟火生成系统的界面设计,需要将烟雾图片嵌入到任意一张图片中,因此需要python opencv把一张图片嵌入(叠加 ...

最新文章

  1. 在Windows上搭建Git Server
  2. Oracle KFED 和 KFOD 工具说明
  3. 5.1.1 IO设备的概念与分类
  4. InfluxDB中文文档
  5. 南京大学与东南大学计算机学院,南京被“严重低估”的1所大学,拥有8个A+学科,无奈校名太普通...
  6. cvtcolor python opencv_二值分析 | OpenCV + skimage如何提取中心线
  7. SpringCloud Zuul(七)之POST Filter
  8. 苹果出来挨打!又一个不配充电器的来了
  9. 研究员说明如何滥用推特图像隐藏 ZIP 和 MP3 文件
  10. ionic 实现 应用内(webview中html页面点击) 和 应用外 (浏览器html页面点击) 打开本地安装应用...
  11. R语言中的机器学习包
  12. 零基础起步Keras+LSTM+CRF的实践命名实体识别NER
  13. 《UNIX编程艺术》--读书笔记
  14. MTK T750平台:CCCI驱动调试
  15. 解决在mysql官网下载慢的问题
  16. MAC欺骗-通过思科模拟器实现
  17. 如何安装适用于win11的安卓子系统(WSA)的谷歌框架安卓13版本
  18. Matlab 在图片上画虚线矩形框
  19. HTML5学习笔记(三)
  20. 【基于RT-Thread+RA6M4的智能鱼缸系统设计之鱼我所欲也】

热门文章

  1. windows远程登录linux方法之putty的使用
  2. 2022-2028年中国生活垃圾转运站行业竞争现状及投资决策建议报告
  3. Win32拳皇元源代码
  4. 计算机广告制作未来发展还行吗,2020年自媒体还好做吗?作为新手入行,能从自媒体上获得收益吗?...
  5. SOM-TL138F基于GDB和GDBServer的远程调试方法
  6. 建立基于以太坊的私有网络和智能合约 1
  7. [Mesh Order]lumerical MODE软件EME Solver中结构重叠区域(clapping)求解过程中的优先级问题
  8. 小白学习pytorch源码(二):setup.py最详细解读
  9. Jenkins设置Window编译环境从节点
  10. mysql java 驱动 版本号_Java - 云原生数仓 AnalyticDB MySQL - 阿里云