用Python实现将一张图片分成9宫格
经常看到朋友圈或者空间里有朋友发布照片时,将朋友圈的照片切分为九宫格,参考了一些大神的博客资料,现整理如下;
将图片分拆成九宫格的思路:
读取图片->填充图片为正方形(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宫格相关推荐
- python把一堆图片分成n份_用Python实现将一张图片分成9宫格的示例
经常看到朋友圈或者空间里有朋友发布照片时,将朋友圈的照片切分为九宫格,参考了一些大神的博客资料,现整理如下; 将图片分拆成九宫格的思路: 读取图片->填充图片为正方形(fill_image函数) ...
- 用python做一张图片_用Python实现将一张图片分成9宫格的示例
经常看到朋友圈或者空间里有朋友发布照片时,将朋友圈的照片切分为九宫格,参考了一些大神的博客资料,现整理如下; 将图片分拆成九宫格的思路: 读取图片->填充图片为正方形(fill_image函数) ...
- python语言编写一个生成九宫格图片的代码_用Python实现将一张图片分成9宫格的示例...
经常看到朋友圈或者空间里有朋友发布照片时,将朋友圈的照片切分为九宫格,参考了一些大神的博客资料,现整理如下; 将图片分拆成九宫格的思路: 读取图片->填充图片为正方形(fill_image函数) ...
- Python网络爬虫开发实战,微博宫格验证码的识别
本节我们来介绍一下新浪微博宫格验证码的识别,此验证码是一种新型交互式验证码,每个宫格之间会有一条指示连线,指示了我们应该的滑动轨迹,我们需要按照滑动轨迹依次从起始宫格一直滑动到终止宫格才可以完成验证, ...
- leetcode 36. 有效的数独 (将 9 * 9 数独划分成 9 宫格 )
leetcode 36. 有效的数独 判断一个 9x9 的数独是否有效.只需要根据以下规则,验证已经填入的数字是否有效即可. 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. ...
- PHP如何把三张图片均匀分布,怎么把一张图片分成9张
把一张图片分成9张的方法:首先打开Photoshop软件,并打开一张图片:然后将图片裁剪成正方形:接着找到切片工具,选择"划分切片",并将数值设置成"3,3": ...
- python图像对比_用python实现对比两张图片的不同
from PIL import Image from PIL import ImageChops def compare_images(path_one, path_two, diff_save_lo ...
- python中特殊变量-python list每三个分成一组python中星号变量的几种特殊用法
在Python中星号除了用于乘法数值运算和幂运算外,还有一种特殊的用法"在变量前添加单个星号或两个星号",实现多参数的传入或变量的拆解,本文将详细介绍"星号参数" ...
- python如何放一张图片上去_python opencv把一张图片嵌入(叠加)到另一张图片上的实现代码...
python opencv把一张图片嵌入(叠加)到另一张图片上 1.背景: 最近做了个烟火生成系统的界面设计,需要将烟雾图片嵌入到任意一张图片中,因此需要python opencv把一张图片嵌入(叠加 ...
最新文章
- 【js】v-for 的一些用法 :class {{index}}
- linux修改密码和宽限天数,Linux chage用法详解:修改用户密码状态
- leetcode算法题--最后一块石头的重量 II★
- ubuntu下wget下载Linux内核源码、make生成.config文件
- 套接字有哪些类型?socket有哪些类型?
- Bossie Awards 2015: The best open source applicati
- Oracle SQL中的!=与
- Spring MVC 中集成 Apache Shiro 安全框架
- C#编程利器之四:委托与事件(Delegate and event) (下)
- 计算机系统结构概念,计算机系统结构的基本概念
- Spring boot Redis客户端 乱码
- 质量管理 六西格玛-黑带大师
- 交换机设备登录账号权限1_交换机怎么设置 交换机配置方法【详解】
- 使用 Lvs + Nginx 集群搭建高并发架构
- LTE系统中的OFDM技术
- html messagebox确定取消,Element MessageBox弹框的详细使用
- python制作自己的二维码
- python txt文件的数据筛选
- Cadence学习三:如何快速的建立artwork层?
- 7-67 计算年龄 (10 分)