Python实现九宫格式的朋友圈功能内附“马云”朋友圈


Posted in Python onMay 07, 2019

PIL(Python Imaging Library)是一个非常强大的Python库,但是它支持Python2.X, 在Python3中则使用的是Pillow库,它是从PIL中fork出来的一个分支。提供了非常强大的图片处理能力,包括存储、格式转换、图像处理等操作

 

有时候看到朋友圈的九宫格动态,是不是感觉非常有逼格呢? 今天就用Python来实现九宫格切图。

先来看几张效果图

Python实现九宫格式的朋友圈功能内附“马云”朋友圈

Python实现九宫格式的朋友圈功能内附“马云”朋友圈

大致思路分为以下几步

1.读取初始照片

2.比较照片的宽高,数值较大的作为边长生成一个新的空白图片

3.将初始图片粘贴至第二部创建的空白图片上

4.将图片进行切割

5.保存 

直接上代码

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”,放入同级目录中,双击启动即可

效果图如下

Python实现九宫格式的朋友圈功能内附“马云”朋友圈

总结

以上所示是小编给大家介绍的Python实现九宫格式的朋友圈功能内附“马云”朋友圈,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Python 相关文章推荐
Python编程中字符串和列表的基本知识讲解
Oct 14 Python
浅谈python 四种数值类型(int,long,float,complex)
Jun 08 Python
用python找出那些被“标记”的照片
Apr 20 Python
python删除本地夹里重复文件的方法
Nov 19 Python
Python实现的网页截图功能【PyQt4与selenium组件】
Jul 12 Python
numpy 对矩阵中Nan的处理:采用平均值的方法
Oct 30 Python
使用python对文件中的单词进行提取的方法示例
Dec 21 Python
详解Python 最短匹配模式
Jul 29 Python
Python字典实现伪切片功能
Oct 28 Python
python Polars库的使用简介
Apr 21 Python
python 如何用terminal输入参数
May 25 Python
Python中的协程(Coroutine)操作模块(greenlet、gevent)
May 30 Python
python验证身份证信息实例代码
May 06 #Python
CentOS6.9 Python环境配置(python2.7、pip、virtualenv)
May 06 #Python
Python实现的栈、队列、文件目录遍历操作示例
May 06 #Python
Python两台电脑实现TCP通信的方法示例
May 06 #Python
python3利用Socket实现通信的方法示例
May 06 #Python
75条笑死人的知乎神回复,用60行代码就爬完了
May 06 #Python
Python Flask 搭建微信小程序后台详解
May 06 #Python
You might like
迅雷下载《中学科技》怀旧期刊下载
2021/02/27 无线电
PHP 多维数组排序(usort,uasort)
2010/06/30 PHP
php获取淘宝分类id示例
2014/01/16 PHP
朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料)
2015/01/26 PHP
php中array_multisort对多维数组排序的方法
2020/06/21 PHP
CI映射(加载)数据到view层的方法
2016/03/28 PHP
基于jquery的合并table相同单元格的插件(精简版)
2011/04/05 Javascript
jquery ajax 同步异步的执行 return值不能取得的解决方案
2012/01/08 Javascript
js中判断对象是否为空的三种实现方法
2013/12/23 Javascript
Javascript中this的用法详解
2014/09/22 Javascript
Javascript window对象详解
2014/11/12 Javascript
BootStrap 轮播插件(carousel)支持左右手势滑动的方法(三种)
2016/07/07 Javascript
AngularJS ng-repeat数组有重复值的解决方法
2016/10/23 Javascript
详解Node.js模板引擎Jade入门
2018/01/19 Javascript
vue实现拖拽的简单案例 不超出可视区域
2019/07/25 Javascript
基于jQuery实现可编辑的表格
2019/12/11 jQuery
js 闭包深入理解与实例分析
2020/03/19 Javascript
vue:el-input输入时限制输入的类型操作
2020/08/05 Javascript
JS前端基于canvas给图片添加水印
2020/11/11 Javascript
原生js实现无缝轮播图效果
2021/01/28 Javascript
Python图像灰度变换及图像数组操作
2016/01/27 Python
python实现BackPropagation算法
2017/12/14 Python
在pycharm中python切换解释器失败的解决方法
2018/10/29 Python
Appium Python自动化测试之环境搭建的步骤
2019/01/23 Python
Django的Modelforms用法简介
2019/07/27 Python
numpy 返回函数的上三角矩阵实例
2019/11/25 Python
python绘制玫瑰的实现代码
2020/03/02 Python
基于Python采集爬取微信公众号历史数据
2020/11/27 Python
HTML5不支持frameset的两种解决方法
2016/11/14 HTML / CSS
英国二手物品交易网站:Preloved
2017/10/06 全球购物
Schutz鞋官方网站:Schutz Shoes
2017/12/13 全球购物
Homestay中文官网:全球寄宿家庭
2018/10/18 全球购物
本科生导师推荐信范文
2014/05/18 职场文书
装配出错检讨书
2014/09/23 职场文书
开发一个封装iframe的vue组件
2021/03/29 Vue.js
MyBatis 动态SQL全面详解
2021/10/05 MySQL