用Python分割九宫格图片发朋友圈
近日,朋友圈流行起了发九宫格的图片,就是将一张图片切割成九张图,然后在朋友圈发九张,但看起来就像一张一样,这不,我楼下的小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分割九宫格图片发朋友圈相关推荐
- 微信选择图片发朋友圈测试点【杭州多测师】【杭州多测师_王sir】
一.功能测试 1.进入到朋友圈,点击右上角相机图标是否会显示:拍摄和从相册选择按钮 2.点击拍摄是否会进入到拍摄照片和拍摄视频界面 3.是否会显示:轻触拍照,长按摄像按钮 4.点击拍照按钮是否会自动聚 ...
- android 仿微信选取相册_Android--选择图片(仿微信发朋友圈)第一篇
这篇博客主要写仿微信朋友圈选择图片发朋友圈.整个功能包括加载图片,显示图片.相册文件夹.预览图片,九宫格显示已经选择好的图片等等,大概会有三篇博客. 效果图 看上面的图,加载图片肯定是异步加载,耗时任 ...
- android朋友圈动态视频教程,Android--选择图片(仿微信发朋友圈)第一篇
这篇博客主要写仿微信朋友圈选择图片发朋友圈.整个功能包括加载图片,显示图片.相册文件夹.预览图片,九宫格显示已经选择好的图片等等,大概会有三篇博客. 效果图 看上面的图,加载图片肯定是异步加载,耗时任 ...
- 荔枝文案,水果荔枝发朋友圈文案
水果文案大全,帮助线上朋友圈营销,让写文案不再痛苦,文案发圈更简单.已更新至百类水果,千条文案,基本涵盖市面上常卖水果的文案. 1.去哪里使用这些文案 打开手机上的朋友圈,下方有个搜一搜功能,搜鲁班文 ...
- android 微信高仿,Android 高仿微信发朋友圈浏览图片效果(转)
最近一直在高仿微信.高仿微信,今天小编再给大家分享一个仿微信发朋友圈浏览图片的效果.... 好了,先看一下效果吧: 这里写图片描述 下面就来说一下具体怎么实现的: 实现思路 1.首先我们要获取数据源, ...
- python发朋友圈_用 Python 发一个高逼格的朋友圈
原标题:用 Python 发一个高逼格的朋友圈 源 /痴海文 /痴海 分享一个非常骚气的发朋友圈姿势.效果如下. 利用今天教给大家的 python 脚本,把一张图重新分隔成 9 张.上传到朋友圈,最后 ...
- Android 高仿微信发朋友圈浏览图片效果
最近一直在高仿微信.高仿微信,今天小编再给大家分享一个仿微信发朋友圈浏览图片的效果.... 好了,先看一下效果吧: 下面就来说一下具体怎么实现的: 实现思路 1.首先我们要获取数据源,数据源就是我们的 ...
- php仿微信朋友圈源码,Android开发仿微信发朋友圈浏览图片效果实例代码
这篇文章主要介绍了Android仿微信发朋友圈浏览图片效果的相关资料,需要的朋友可以参考下 先看一下效果吧: 下面就来说一下具体怎么实现的: 实现思路1.首先我们要获取数据源,数据源就是我们的每条说说 ...
- python发朋友圈突破朋友圈限制_突破限制!原来朋友圈可以发长达5分钟的视频,后悔没早点知道...
原标题:突破限制!原来朋友圈可以发长达5分钟的视频,后悔没早点知道 现在使用微信的人越来越多,很多人喜欢在微信朋友圈分享自己的生活,可能是发图片,也可能是发日常的视频,但是视频有限制怎么办? 一.朋友 ...
最新文章
- 淘淘商城学习笔记 之 上传图片到远程服务器,图片的回显出现的bug
- java 12-3 StringBuffer的添加和删除功能
- thinkphp+ajax无刷新分页并加载显示图片
- 【分布式计算】DFS BigTable
- unc 目录不受支持_Shopify平台对于店铺模版都提供哪些支持
- reducebykeyandwindow java_Spark Streaming笔记整理(三):DS的transformation与output操作
- 恢复初始快捷键_CAD常用命令快捷键大全,47个快捷键50个CAD技巧,教你快速画图...
- matlab 实验七 低层绘图操作,matlab实验内容解答.doc
- [ 数据集 ] VOC 2012 数据集介绍
- 数字化转型的本质:“研产供销服”各环节的敏捷化
- python读取grd数据_一个关于grads显示grd格式数据的问题。
- CST电磁仿真GPU计算工作站、集群最新配置推荐2022
- 英雄联盟LOL JAVA版
- 线性代数 | (3) 行列式
- 一份最全的excel下拉列表攻略
- 我在MTK平台下调试音频ALSA
- luogu P2124 奶牛美容
- 【FPGA】五、蜂鸣器播放音乐
- 使用IDEA制作Java面向对象小游戏《原谅帽大作战》
- CodeBlocks中文汉化Code::Blocks 10.05 中文版
热门文章
- 导致请求失败 设备硬件出现致命错误_设备硬件出现致命错误,导致请求失败。请求大神帮忙...
- android+浏览器+主页,android 更改浏览器默认主页
- 在Power BI中用DAX新建列的方式进行累计求和
- 你只需画草稿,剩下都交给AI!哈佛『机器学习』最新课程;Evernote收费又难用?试试这款开源工具;提示工程资源整合笔记;前沿论文 | ShowMeAI资讯日报
- 微信小程序云开发入门第一篇---开发准备事项
- 微信小程序-简历信息显示
- 浅谈人机交互设计系统
- 使用免费开源的Odoo CRM如何有效的获取潜在客户线索的经验分享
- 【Mysql上分之路】第三篇:Mysql安装与配置、目录结构
- 计算流体力学的基本方法简介(有限差分法、有限元法、有限体积法)