前言

这是一篇"蓄谋已久"的文章,为什么这么说呢?

记得那时我刚从健身房出来,当我在公交车站台等车的时候,无聊刷起了朋友圈,看到朋友圈里有好友在发九宫格的动态,就觉得好洋气呀,于是我就萌生了一个罪恶的想法,能不能借助Python帮我自动处理一下图片呢,毕竟我手残,搞不了这么精细的活,对吧,于是就诞生了这篇分享文章;

既然能够对图片进行九宫格化操作,那么视频是不是也可以呢?答案是肯定的,关于对视频进行九宫格化的操作我将在本系列推文的第二篇进行讲解

(文章末尾我放了一个九宫格视频的demo,小伙伴们可以先看看)

朋友圈九宫格图片技术详解

首先,我们来看看我当时在朋友圈里看到的这条动态:

我们知道,朋友圈一次最多可以分享9张图片,因此我们只需要将一张完整的图片按照合适的尺寸切割成9张小图,然后按照原图的顺序对其进行拖拽拼接即可。接下来,我将以我个人的证件照为例,来为大家完整的演示这个案例。

在此之前,我们先来介绍一下完成此案例所需要掌握的一些知识。

01 - 相关API介绍

PIL.Image.open(fp,mode='r')

PIL.Image.new(mode,size,color=0)

Image.paste(im,box=None,mask=None)

Image.crop(box=None)

Image.save(fp,format=None,**params)

02 - 思路分析及部分代码展示

我们可以将总体思路概括为以下三大步骤:

输入想要发朋友圈的图片;

通过代码进行切割并将切割好的图片进行保存;

发朋友圈

有了思路之后,我们来详细讲解一下每一步所对应的细节:

首先

,我们来对用户输入的图片进行预处理,即对图片进行

正方形化和

添加白色背景两个操作,代码如下:

# 1.将长宽不等的图片进行正方形化的处理;2.对所有输入的图片进行添加白色背景的操作

def fill_image_to_square(img):

# 获取输入图片的大小尺寸

width, height = img.size

# 若所输入图片大小尺寸不等,则将长宽中较大者作为新图片的大小

new_image_length = width if width > height else height

# 生成一个白色背景的图片,大小尺寸为用户所输入图片长宽尺寸的较大者

new_image = Image.new(img.mode, (new_image_length, new_image_length), color='white')

# 将用户所输入的图片粘贴在白色背景的正中央

if width > height:

new_image.paste(img, (0, int((new_image_length - height) / 2)))

else:

new_image.paste(img, (int((new_image_length - width) / 2), 0))

return new_image

其次,我们来对已经预处理好的图片进行切割操作,为了方便小伙伴们理解切割图片的具体细节,请看下图:

我们对所输入的图片建立二维坐标系,图片切割的顺序即为图中所示的数字顺序,切割功能部分的实现代码如下所示:

def cut_image(img):

width, height = img.size

# 一行放3张图

item_width = int(width / 3)

box_list = []

# (left, upper, right, lower)

for i in range(0, 3):

for j in range(0, 3):

print(j*item_width, i*item_width, (j+1)*item_width, (i+1)*item_width)

box = (j*item_width, i*item_width, (j+1)*item_width, (i+1)*item_width)

box_list.append(box)

img_list = [img.crop(box) for box in box_list]

return img_list

最后

,将我们输入的图片切割完成之后,我们只需要将其保存在本地即可,如下所示:

接着我们再来看看保存功能部分的代码实现:

def save_cropped_image(img_list):

index = 1

for img in img_list:

# 保存到当前目录的dong_wechat文件夹下且图片格式为png

img.save("dong_wechat/"+str(index) + '.png', 'PNG')

index += 1

写完了所有的功能实现之后,我们来看一下发出来的朋友圈长什么样子:

哈哈哈,不错,毕竟我花瓶的称号不是浪得虚名的,大功告成!

写在最后

在上述文章中我们详细介绍了如何将一张图片切割成9部分,并将其发布在朋友圈中,

小伙伴们学会了吗,快去实现一下吧!

- End -

往期推荐

python123九宫格输入法_【带你成为pyq最靓的仔】朋友圈九宫格(一)之图片切割篇...相关推荐

  1. java设计九宫格拼图软件哪个好用_抖音超火的朋友圈九宫格用什么软件做的? 抖音九宫格图片制作教程...

    抖音这种朋友圈九宫格用什么软件做的?最近,在抖音刷到好多这种九宫格的朋友圈截图,请问是怎么做的?突然火起来的抖音朋友圈九宫格,脚本之家小编也发现这样发朋友圈真的很好看也很有意思,特别是出去玩或者旅游拍 ...

  2. python123九宫格输入_python制作朋友圈九宫格图片

    本文实例为大家分享了python朋友圈九宫格图片的具体制作代码,供大家参考,具体内容如下 将一张图片,切分成九宫格的样式: 原图: # -*- coding: UTF-8 -*- from PIL i ...

  3. 世界那么大,我想去看看。Django仿制微信朋友圈九宫格相册(1)

    前面文章里的Python和Django知识点很重要,但过于零散.我们学习最终的目的还是应用.我们今天就来看下如何利用Django仿制微信朋友圈的九宫格相册.本教程比较长,会分成2部分发布,欢迎持续关注 ...

  4. Android 实现仿微信朋友圈九宫格图片+NineGridView+ImageWatcher(图片查看:1.预览,2.拖动,3.放大,4.左右滑动,5.长按保存到手机)的功能

    一.测试 实现: 二.添加依赖包: implementation 'androidx.appcompat:appcompat:1.1.0'implementation 'androidx.recycl ...

  5. Java 微信开发(四)生成带参数二维码及分享到朋友圈、好友、QQ

    微信公众号中的微信分享到朋友圈.分享到QQ.分享到好友功能都是可以帮助营销活动支持的,今天就说一下公众号生成带参数的二维码分享到朋友圈功能 根据微信公众号提供的开发者文档我们可以看出提供的有方法,我们 ...

  6. Android自定义ViewGroup实现朋友圈九宫格控件

    在我们的实际应用中,经常需要用到自定义控件,比如自定义圆形头像,自定义计步器等等,这篇文章主要给大家介绍了关于Android自定义ViewGroup实现朋友圈九宫格控件的相关资料,需要的朋友可以参考下 ...

  7. python 还原九宫格图片_用Python做一个好玩的朋友圈九宫格抽奖

    最近在朋友圈看到个好玩的抽奖九宫格: 随便点开一个: 设计思路 以朋友圈中看到的1号图做参考,我们需要准备 300*900 的白色底图,搞笑表情图,广告语,中间一个醒目的数字编号,外加下方的嘲讽&qu ...

  8. python朋友圈图片_教你用python将图片变成九宫格,打造高逼格朋友圈九宫格图片...

    python的出现,使很多困难的东西都简单化了,有时你在朋友圈看到朋友发的九宫格朋友圈,你会觉得很厉害,下面小编教你用python将一张图片变成九宫格,帮你打造高逼格朋友圈发文. 这个项目主要分为三个 ...

  9. python社团宣传语_用Python做一个好玩的朋友圈九宫格抽奖

    最近在朋友圈看到个好玩的抽奖九宫格: 随便点开一个: 设计思路 以朋友圈中看到的1号图做参考,我们需要准备 300*900 的白色底图,搞笑表情图,广告语,中间一个醒目的数字编号,外加下方的嘲讽&qu ...

最新文章

  1. 单片机对于大学生难学吗?
  2. SAP MM 标准的采购订单预付款功能介绍
  3. 快速排序 数组 函数 c语言,书上快速排序程序中子函数是怎样更改数组的?理论上不可实现啊...
  4. 实现定时中断_无线传感器网络实验报告(二)Timer定时应用实验
  5. (林雷看来13):功能优先,发展和重建同步,业绩后
  6. Security+ 学习笔记21 认证
  7. Landsat卫星MSS/TM/ETM数据(转自ESRI社区)(二)
  8. 分享淘宝利器飞天侠4.1至尊商业版 去除域名限制 绕过淘宝API直接采集
  9. 案例:Java多态实现饮料购买咖啡、可乐、矿泉水
  10. ☀️光天化日学C语言☀️(01)- 第一个C语言程序 | 万丈高楼平地起
  11. MapStruct系列(6)-映射集合、映射Stream流、映射枚举
  12. Android面试题总结(三)
  13. 小强怎样练成——读《现代软件工程——构建之法》第三章有感
  14. 图像插值(最近邻插值法 和 双线性插值法)
  15. matlab绘制世界地图(含国界)、中国地图(含省界),可下载m_map和shp文件
  16. [转]Mysql在大型网站的应用架构演变
  17. 广州创龙TMS320C6748 DSP 开发板免费申请试用
  18. 南昌大学计算机技术专业课,20一战南昌大学计算机技术经验分享
  19. 今年一直搞Oracle EBS优化,脑壳痛
  20. Qt Designer工具的使用

热门文章

  1. matrix与array
  2. Tunnelblick mac是一款在主机操作系统上运行VP~解决方案的跳板软件。
  3. 淘宝美工是做什么的?主要工作内容是什么
  4. 当.m2下的setting.xml不存在如何配置
  5. 2023年第十五届计算机与自动化工程国际会议(ICCAE 2023)
  6. 如何用AXURE制作简单的幻灯片播放
  7. 怎样学习才能拥有所谓“高并发”的经验?
  8. SQL server培训(一)
  9. 找实习如何避免培训机构_如果想获得梦想的实习机会,要避免的错误
  10. python 根号化简_Python学习之如何简化代码?六大技巧!