前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【带你成为pyq最靓的仔】朋友圈九宫格(一)之图片切割篇

【带你成为pyq最靓的仔】朋友圈九宫格(一)之图片切割篇

作者头像
石璞东
发布于 2020-09-17 06:23:49
发布于 2020-09-17 06:23:49
1.4K00
代码可运行
举报
文章被收录于专栏:石璞东 | haha石璞东 | haha
运行总次数:0
代码可运行

前言

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

记得那时我刚从健身房出来,当我在公交车站台等车的时候,无聊刷起了朋友圈,看到朋友圈里有好友在发九宫格的动态,就觉得好洋气呀,于是我就萌生了一个罪恶的想法,能不能借助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. 通过代码进行切割并将切割好的图片进行保存
  3. 朋友圈

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

首先,我们来对用户输入的图片进行预处理,即对图片进行正方形化添加白色背景两个操作,代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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部分,并将其发布在朋友圈中,小伙伴们学会了吗,快去实现一下吧!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 hahaCoder 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【CodeBuddy】三分钟开发一个实用小功能之:九宫格图片切割&生成器
我正在参加CodeBuddy「首席试玩官」内容创作大赛,本文所使用的 CodeBuddy 免费下载链接: 腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴
Jimaks
2025/05/22
1020
【CodeBuddy】三分钟开发一个实用小功能之:九宫格图片切割&生成器
用Python助女神发朋友圈
爱美是人类的天性,特别是女性。她们不仅喜欢打扮自己,还喜欢晒圈儿分享美好的事物。今天就教大家一个朋友圈晒图利器——切割图片。
用户8544541
2022/01/27
2570
用Python助女神发朋友圈
如何发朋友圈九宫格图片
朋友圈和微博的图片都是九宫格,如何让一张图切为9图呢,在github上找到 https://github.com/yumendy/nine_picture[1] 这个项目。
苏生不惑
2019/08/17
9350
【说站】python九宫格图片的原理
1、用Python制作的九宫格图像生成器包装exe文件,用户无需部署安装Python的开发环境,即可在当地运行该程序,快速生成九宫格图像。
很酷的站长
2022/11/24
3300
【说站】python九宫格图片的原理
Python切割图片成九宫格
这篇文字讲述如何使用Python把一张完整的大图切割成9份小图片,制作朋友圈九宫格图文分享。 原图如下:
诸葛青云
2019/10/07
1.2K0
Python切割图片成九宫格
如何发一条九宫格图片的朋友圈
还有微博九宫格图 https://weibo.com/2717930601/JjpKtlUZ9 :
苏生不惑
2020/09/10
6930
教你如何用Python处理图片九宫格,炫酷朋友圈
在日常的生活中,大家偶尔会看到朋友圈发的照片由一张被切成九张的效果,有时由一张照片被切成九张照片所带来的视觉盛宴是不一样的!
CDA数据分析师
2019/07/02
1K0
教你如何用Python处理图片九宫格,炫酷朋友圈
【Python】Python处理图像五个有趣场景,很实用!
Python像是叮当猫的口袋,几乎什么都能做,适合外行小白们去摸索学习,能极大的增加对编程的兴趣。
黄博的机器学习圈子
2021/04/16
6580
【Python】Python处理图像五个有趣场景,很实用!
用python制作九宫格原来如此简单
from PIL import Imageimport os# 读取图片img_path = input('输入图片路径:')im = Image.open(img_path)# 获取图片的尺寸x, y = im.size# 计算白色背景的尺寸# 10是两个空隙的长度总和bg_x = x + 10bg_y = y + 10 # 创建白色背景图bg_img = Image.new('RGB', (bg_x, bg_y), (255, 255, 255))# 计算每次裁剪的长度interval_x = x //
佛系编程人
2022/07/06
7090
用python制作九宫格原来如此简单
python制作九宫格切割工具
这篇文章介绍了一个使用Python编写的九宫格切割工具,通过该工具,用户可以将一张图片按照九宫格的方式进行切割,方便在朋友圈等场合展示。文章首先通过PIL库对输入的图片进行处理,将其填充为正方形,然后居中显示在白色背景上。接着,作者使用切割算法将图片分割成九个小块,每个小块代表九宫格中的一个位置。最后,将切割后的图片保存为PNG格式。
GeekLiHua
2025/01/21
950
python制作九宫格切割工具
写一个自适应九宫格图片栏
小刘同学负责企微内嵌 H5 开发,按照这个项目一贯的做法 UI 只出了移动端设计稿。今天的页面有个附件展示组件,不点击的时候大概就像微博图片那样直接九宫格展示。(点击再依据不同附件类型走各自的逻辑暂且不表)简单,对吧?小刘吭哧吭哧搞得差不多了,然后叫产品去开发环境瞅一眼。只见产品在 PC 企微客户端打开页面,横着一拉,小刘的组件就横向散开来了。一问小刘,原来长宽都是写的固定多少 rem。项目本身之前一直丢在企微移动端里展示,也就一直没考虑sizechange的情况。。。小刘改了好一会还没改好。
玖柒的小窝
2021/10/09
5980
小猪佩奇的4种python玩法
为什么要学习python?是因为不仅社会上很多工作需要用到python,同时我们可以利用python做很多好玩儿的事儿,
Python进阶者
2020/07/15
1.2K0
小猪佩奇的4种python玩法
【每周一坑】房贷计算器 |【解答】生成九宫格图片
因为是“刚需”,所以网上早有无数的版本。有人已经用过,有人以后可能会用。有没有想过,类似这种小工具,其实你自己也可以实现。
Crossin先生
2018/07/24
7670
【每周一坑】房贷计算器  |【解答】生成九宫格图片
Python生成九宫格图片
要实现上面的效果非常简单,我们只需要截取图片的九个区域即可。今天我们就要带大家使用Python来实现一下九宫格图片的生成。在开始之前,我们需要安装一下Pillow模块,语句如下:
ZackSock
2021/03/09
8700
Python生成九宫格图片
python将1张图片分割成9张
思路 代码 # -*- coding: utf-8 -*- ''' 将一张图片填充为正方形后切为9张图 Author: ''' from PIL import Image import sy
周小董
2019/03/25
2.3K0
python将1张图片分割成9张
装逼篇 | 抖音超火的九宫格视频是如何生成的,Python 告诉你答案
除了传统的剪辑软件可以实现,是否有其他更加快捷方便的方式?比如:一键生成,批量生成?
吴延宝
2020/09/22
7170
装逼篇 | 抖音超火的九宫格视频是如何生成的,Python 告诉你答案
回敬Python蹭女神热度助发朋友圈,Java实现头像分成九宫图,再生成拼图头像
于是,我点开文章后,大概看了下文章的意思,其实就是把一个图片分成九宫图,即拼图的碎片,既然Python都能实现,作为回应,java必然也是可以做到的。
软件测试君
2020/07/31
8170
回敬Python蹭女神热度助发朋友圈,Java实现头像分成九宫图,再生成拼图头像
10分钟用Python做个微信朋友圈抽奖九宫格
哈哈,笑出猪叫!这个玩法利用了朋友圈发长图会显示中间局部的设定,搞笑之余也为朋友圈广告营销贡献了新思路。
短短的路走走停停
2019/08/02
1.2K0
10分钟用Python做个微信朋友圈抽奖九宫格
创意九宫格图片制作技巧!
今天给大家分享九宫格照片的制作技巧! ▽ 是不是每次看到朋友圈有人发九宫格图片 都觉得特别羡慕 其实这种图片可以自己制作 步骤也不复杂 下面交给大家三种制作方法: 1、APP 2、表格背景填充 3、矩
数据小磨坊
2018/04/10
2K0
创意九宫格图片制作技巧!
OpenCV玩九宫格数独(三):九宫格生成与数独求解
刘潇龙
2017/04/18
3.4K0
OpenCV玩九宫格数独(三):九宫格生成与数独求解
推荐阅读
相关推荐
【CodeBuddy】三分钟开发一个实用小功能之:九宫格图片切割&生成器
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验