用Python搞定九宫格式的朋友圈。内附“马云”朋友圈
PIL(Python Imaging Library)是一个非常强大的Python库,但是它支持Python2.X, 在Python3中则使用的是Pillow库,它是从PIL中fork出来的一个分支。提供了非常强大的图片处理能力,包括存储、格式转换、图像处理等操作
有时候看到朋友圈的九宫格动态,是不是感觉非常有逼格呢? 今天就用Python来实现九宫格切图。
先来看几张效果图


大致思路分为以下几步
读取初始照片
比较照片的宽高,数值较大的作为边长生成一个新的空白图片
将初始图片粘贴至第二部创建的空白图片上
将图片进行切割
保存
直接上代码
from PIL import Image
image = Image.open('图片路径.jpg')
width, height = image.size
# 高和宽进行比较,较大的为新图片的长度
new_length = height if height > width else width
# 创建一张正方形空图片,底色为白色,
new_image = Image.new(image.mode, (new_length, new_length), color='white')
# 将要处理的图片粘贴到新创建的图片上,居中
if height > width: # 如果高度大于宽,则填充图片的宽度
new_image.paste(image, (int((new_length - width) / 2)), 0)
else:
new_image.paste(image, (0, int((new_length - height) / 2)))
# 朋友圈一排三张图片因此宽度切割成3份
new_length = int(new_length / 3)
# 用来保存每一个切图
box_list = []
for i in range(0, 3):
for j in range(0, 3):
# 确定每个图片的位置
box = (j * new_length, i * new_length, (j + 1) * new_length, (i + 1) * new_length) # (left, top, right, bottom)
box_list.append(box)
# 通过crop函数对图片进行切割
image_list = [new_image.crop(box) for box in box_list]
for (index, image) in enumerate(image_list):
image.save(str(index) + '.png', 'PNG')
print("九宫格图片生成完毕!")
为了方便使用,通过pyinstaller对脚本进行打包成exe文件。
pip3 install pyinstaller
执行
pyinstaller -F cut_picture.py
就会在当前目录生成一个dist文件夹,里面就有我们最终需要的exe文件。如何使用呢?只需要在将要切割的图片重命名为“a.jpg”,放入同级目录中,双击启动即可
效果图如下

有需要的同学可以在公众号【程序员共成长】后台 回复【cut】获取exe文件的下载链接。

用Python搞定九宫格式的朋友圈。内附“马云”朋友圈的更多相关文章
- 如何用python搞定验证码中的噪点
背景:朋友在为"关山口男子职业技术学校"写一款校园应用,于是找MoonXue写一个学生选课系统的登录接口.为了搞定这个接口,不得不先搞定这个系统的验证码. 验证码大概是这个样子 看 ...
- Win7下python Scrapy一站式搭建全攻略(内附相关下载链接)
写在前面: 好久没有登录博客了,意外看到之前的几篇文章都有不错的阅读量,开心极了,不过没有什么点赞和评论,大概是没有给大家带来什么切实的帮助吧.o(*////▽////*)q. 最近在NTU负责一个国 ...
- 第4天 | 12天搞定Python,基础语法(下)
为了方便你的学习,减轻负重,我特意将基础语法分成上下两部分.希望你喜欢这种方式,如果不喜欢,你可以跟我说,反正我是不会改的,哈哈~~. 如果上部分,你还没看的话,先去看<第4天 | 12天搞定P ...
- 第10天 | 12天搞定Python,文件操作(超详细)
在开发系统的过程中,经常会用到XML存储和传输数据,XML是一种用于标记电子文件使其具有结构性的标记语言,在博客中经常会见到. JSON是一种轻量级的数据交换格式,常被用在后端和前端的数据交互上,如你 ...
- 第1天|12天搞定Python网络爬虫,吃里爬外?
人力资源部漂亮的小MM,跑来问我:老陈,数据分析和爬虫究竟是关系呀?说实在的,我真不想理她,因为我一直认为这个跟她的工作关系不大,可一想到她负责我负责部门的招聘工作,我只好勉为其难地跟她说:数据分析, ...
- leetcode-Spiral Matrix II 螺旋矩阵2之python大法好,四行就搞定,你敢信?
Spiral Matrix II 螺旋矩阵 Given an integer n, generate a square matrix filled with elements from 1 to n2 ...
- 转载 12步轻松搞定python装饰器
作者: TypingQuietly 原文链接: https://www.jianshu.com/p/d68c6da1587a 呵呵!作为一名教python的老师,我发现学生们基本上一开始很难搞定pyt ...
- Python高级特性: 12步轻松搞定Python装饰器
12步轻松搞定Python装饰器 通过 Python 装饰器实现DRY(不重复代码)原则: http://python.jobbole.com/84151/ 基本上一开始很难搞定python的装 ...
- 12步轻松搞定Python装饰器
译者:寒寻 译文:http://www.cnblogs.com/imshome/p/8327438.html 原文:https://dzone.com/articles/understanding-p ...
随机推荐
- 第二节: Redis之Set类型和SortedSet类型的介绍和案例应用
一. Set类型基础 1. 类型说明 1个key→多个value,value的值不重复! Set一种无序且元素内容不重复的集合,不用做重复性判断了,和我们数学中的集合概念相同,可以对多个集合求交集.并 ...
- Kafka关键参数设置
生产环境中使用Kafka,参数调优非常重要,而Kafka参数众多,我们的java的Configuration代码中,经常设置的参数如下: Properties props = new Properti ...
- C# Large Files MD5 C# 获取大文件MD5
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- c# 修改系统日期格式
引用 using System.Runtime.InteropServices; [DllImport("kernel32.dll", EntryPoint = "Get ...
- SQL 除去数字中多于的0
/* 除掉多于的0 */ CREATE FUNCTION [dbo].[fn_ClearZero] ( ) ) ) AS BEGIN ); IF (@inValue = '') SET @return ...
- block注意事项
1.block的声明和注意事项 #import "ZYViewController.h" @interface ZYViewController () @end /*用typede ...
- Android 拖动条/滑动条控件、星级评分控件
ProgressBar有2个子控件: SeekBar 拖动条控件 RatingBar 星级评分控件 1.拖动条控件 <SeekBar android:layout_width=" ...
- 谈谈<? extends T> 和<? super T>理解
项目中遇到<? extends T> 和<? super T> 这两者,来说说自己的理解.首先我们先了解什么是泛型 什么是泛型 泛型是在编译阶段一种防止错误对象输入的机制.编译 ...
- debian apt-get 代理
一:在 /etc/apt/目录下建立 apt.conf 文件增加如下 Acquire::http::Proxy "http://proxyxxxxxxx:port"; 注意格式:最 ...
- Python环境安装与基础语法(2)——数据类型、标识符、语言分类
高级语言发展 结构化语言:以顺序(步骤化),分支,循环描述问题 面向对象语言:接近人类的认知,万物抽象成对象,对象间的关系抽象成类和继承 程序=数据结果+算法 Python解释器 CPython:由C ...