近日,朋友圈流行起了发九宫格的图片,就是将一张图片切割成九张图,然后在朋友圈发九张,但看起来就像一张一样,这不,我楼下的小A就狂发了一堆。

看起来好像挺好玩的,于是就问了小A他是怎样做的,他跟我说要下载一个软件,然后就这样那样操作就可以了。

作为一个有理想(hen)有抱负(lan)的程序员,怎么可能会为了这么一个小功能就去下载一个软件,不用的时候还得把他给删了,于是乎就想到了要不自己写个代码,然后把这个功能放在微信小号上,只要给小号发张图片,就能将处理好后的图片返回给你。想想还是挺美好,那么,说干就干。(效果如下)

这样,集齐九张图片就可以去发朋友圈了,非开发人员看到这里就可以加下小A的微信号,去试试这个技能了,公众号里回复 九宫图 就能获取小A的微信名片加好友了。

至于程序员们,我们可以详细来聊聊这个功能开发的思路跟具体代码。

本次用到的环境:Win10 or Ubuntu

语言:Pyhton3.6.4

第三方库:Pillow,itchat

九宫格分割代码来源:https://blog.csdn.net/mico_cmm/article/details/81747974

itchat的使用可以参考之前的文章

Python微信聊天机器人

我们先来看看九宫格分割的思路:

1 首先,你要有一张要发朋友圈的原图,长宽就看你自己安排了,不过尽量是正方形的效果会好点。

2 根据图片中最长的那一边的长度a来生成一个边长为a的白底正方形,然后将原图居中放置到边长为a的白底正方形中央。如下图所示:我选择了一张长为800,宽为500的原图,我们要做的就是生成一个边长为800的白底正方形,然后将原图放置到正方形的正中央。

3 就是将图片九等分,切割成九张图

4 利用itchat接收用户发送过来的图片,对图片处理后返回用户九张处理后的图片

生成白底正方形:

from PIL import Image
# 先将原图填充为正方形
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)  # 因为朋友圈一行放3张图。item_height = int(height / 3)box_list = []# (left, upper, right, lower)for i in range(0 ,3):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_height ,( j +1 ) *item_width ,( i +1 ) *item_height)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:# 在windows下地址需要双\进行转义,linux下就直接文件夹地址:/home/image/image.save('C:\\Users\Administrator\\Desktop\\九宫格\\'+str(index) + '.jpg')index += 1# 点击按钮,实现图片分割

图片处理的主函数:

def cTofClicked(image_name):# 打开一张新图片image =Image.open(image_name)# 填充图片image = fill_image(image)# 切割图片image_list = cut_image(image)# 保存图片save_images(image_list)

通过Itchat将功能部署在微信号上:

import itchat
from itchat.content import *
import time# 注册信息类,如果有人发图片给你,则进入这个函数进行操作
@itchat.msg_register([PICTURE])
def download_files(msg):# 将接收到的图片保存到py所在文件夹内msg['Text'](msg['FileName'])# 将图片传入到函数中,进行处理cTofClicked(msg['FileName'])# 将处理好的文件一张张按顺序发送给用户for i in range(1,10):time.sleep(1)ls="C:\\Users\Administrator\\Desktop\\九宫格\\"+str(i)+".jpg"itchat.send('@img@%s' % ls,toUserName=msg['FromUserName'])# 如果是在linux环境下,需要添加参数enableCmdQR,将二维码通过命令行的形式展示出来
# itchat.auto_login(hotReload=True,enableCmdQR=2)
itchat.auto_login(hotReload=True)
itchat.run()

最后,运行上面这些代码,扫码登陆就可以使用了,如果你想24小时都能用的话,最好是有自己的服务器,然后后台一直挂着就可以了。

欢迎大家关注我的微信公众号Python小黑屋

python学习资源/有趣的python文章/python学习笔记

用Python分割九宫格图片发朋友圈相关推荐

  1. 微信选择图片发朋友圈测试点【杭州多测师】【杭州多测师_王sir】

    一.功能测试 1.进入到朋友圈,点击右上角相机图标是否会显示:拍摄和从相册选择按钮 2.点击拍摄是否会进入到拍摄照片和拍摄视频界面 3.是否会显示:轻触拍照,长按摄像按钮 4.点击拍照按钮是否会自动聚 ...

  2. android 仿微信选取相册_Android--选择图片(仿微信发朋友圈)第一篇

    这篇博客主要写仿微信朋友圈选择图片发朋友圈.整个功能包括加载图片,显示图片.相册文件夹.预览图片,九宫格显示已经选择好的图片等等,大概会有三篇博客. 效果图 看上面的图,加载图片肯定是异步加载,耗时任 ...

  3. android朋友圈动态视频教程,Android--选择图片(仿微信发朋友圈)第一篇

    这篇博客主要写仿微信朋友圈选择图片发朋友圈.整个功能包括加载图片,显示图片.相册文件夹.预览图片,九宫格显示已经选择好的图片等等,大概会有三篇博客. 效果图 看上面的图,加载图片肯定是异步加载,耗时任 ...

  4. 荔枝文案,水果荔枝发朋友圈文案

    水果文案大全,帮助线上朋友圈营销,让写文案不再痛苦,文案发圈更简单.已更新至百类水果,千条文案,基本涵盖市面上常卖水果的文案. 1.去哪里使用这些文案 打开手机上的朋友圈,下方有个搜一搜功能,搜鲁班文 ...

  5. android 微信高仿,Android 高仿微信发朋友圈浏览图片效果(转)

    最近一直在高仿微信.高仿微信,今天小编再给大家分享一个仿微信发朋友圈浏览图片的效果.... 好了,先看一下效果吧: 这里写图片描述 下面就来说一下具体怎么实现的: 实现思路 1.首先我们要获取数据源, ...

  6. python发朋友圈_用 Python 发一个高逼格的朋友圈

    原标题:用 Python 发一个高逼格的朋友圈 源 /痴海文 /痴海 分享一个非常骚气的发朋友圈姿势.效果如下. 利用今天教给大家的 python 脚本,把一张图重新分隔成 9 张.上传到朋友圈,最后 ...

  7. Android 高仿微信发朋友圈浏览图片效果

    最近一直在高仿微信.高仿微信,今天小编再给大家分享一个仿微信发朋友圈浏览图片的效果.... 好了,先看一下效果吧: 下面就来说一下具体怎么实现的: 实现思路 1.首先我们要获取数据源,数据源就是我们的 ...

  8. php仿微信朋友圈源码,Android开发仿微信发朋友圈浏览图片效果实例代码

    这篇文章主要介绍了Android仿微信发朋友圈浏览图片效果的相关资料,需要的朋友可以参考下 先看一下效果吧: 下面就来说一下具体怎么实现的: 实现思路1.首先我们要获取数据源,数据源就是我们的每条说说 ...

  9. python发朋友圈突破朋友圈限制_突破限制!原来朋友圈可以发长达5分钟的视频,后悔没早点知道...

    原标题:突破限制!原来朋友圈可以发长达5分钟的视频,后悔没早点知道 现在使用微信的人越来越多,很多人喜欢在微信朋友圈分享自己的生活,可能是发图片,也可能是发日常的视频,但是视频有限制怎么办? 一.朋友 ...

最新文章

  1. 淘淘商城学习笔记 之 上传图片到远程服务器,图片的回显出现的bug
  2. java 12-3 StringBuffer的添加和删除功能
  3. thinkphp+ajax无刷新分页并加载显示图片
  4. 【分布式计算】DFS BigTable
  5. unc 目录不受支持_Shopify平台对于店铺模版都提供哪些支持
  6. reducebykeyandwindow java_Spark Streaming笔记整理(三):DS的transformation与output操作
  7. 恢复初始快捷键_CAD常用命令快捷键大全,47个快捷键50个CAD技巧,教你快速画图...
  8. matlab 实验七 低层绘图操作,matlab实验内容解答.doc
  9. [ 数据集 ] VOC 2012 数据集介绍
  10. 数字化转型的本质:“研产供销服”各环节的敏捷化
  11. python读取grd数据_一个关于grads显示grd格式数据的问题。
  12. CST电磁仿真GPU计算工作站、集群最新配置推荐2022
  13. 英雄联盟LOL JAVA版
  14. 线性代数 | (3) 行列式
  15. 一份最全的excel下拉列表攻略
  16. 我在MTK平台下调试音频ALSA
  17. luogu P2124 奶牛美容
  18. 【FPGA】五、蜂鸣器播放音乐
  19. 使用IDEA制作Java面向对象小游戏《原谅帽大作战》
  20. CodeBlocks中文汉化Code::Blocks 10.05 中文版

热门文章

  1. 导致请求失败 设备硬件出现致命错误_设备硬件出现致命错误,导致请求失败。请求大神帮忙...
  2. android+浏览器+主页,android 更改浏览器默认主页
  3. 在Power BI中用DAX新建列的方式进行累计求和
  4. 你只需画草稿,剩下都交给AI!哈佛『机器学习』最新课程;Evernote收费又难用?试试这款开源工具;提示工程资源整合笔记;前沿论文 | ShowMeAI资讯日报
  5. 微信小程序云开发入门第一篇---开发准备事项
  6. 微信小程序-简历信息显示
  7. 浅谈人机交互设计系统
  8. 使用免费开源的Odoo CRM如何有效的获取潜在客户线索的经验分享
  9. 【Mysql上分之路】第三篇:Mysql安装与配置、目录结构
  10. 计算流体力学的基本方法简介(有限差分法、有限元法、有限体积法)