恰逢公司成立10周年,发短信以贺。
文字不多,上图片;一张不够,来九张?
太分散,那就用一大张分成九份——九宫格图片。
九宫格图片的实现——九行python代码
逢年过节的,小编也是耐不住年底的凑那个热闹劲。
图片有了,以下测试代码中,长宽像素是3的倍数,比如1080x1080,这样每条边刚好3等分。
好像网上有工具,不过多需要提供你的个人信息以换取。小编个人信息不足为虑,但是心有不甘,干脆直接写个代码来实现。这里分享代码如下:
import cv2 import numpy as np def split_image(image_path): img = cv2.imread(image_path) #读取图片文件 -row-1 imgheight=img.shape[0] #读取图片的高度-row-2 imgwidth=img.shape[1] #读取图片的宽度-row-3 M = (imgheight//3 #高度的1/3取整-row-4 N = imgwidth//3 #宽度的1/3取整-row-5 #均分图片为9部分-row-6 tiles = [img[x:x+M,y:y+N] for x in range(0,imgheight,M) for y in range(0, imgwidth, N)] #将每部分图按序命名后保存,保存路径请自己设置 for i, tile in enumerate(tiles): #-row-7 cv2.imwrite("YourPathName/"+f"tile_{i}.png", tile) #-row-8 if __name__ == "__main__": split_image("YourPathName/YourImageFile.png") #指定某个文件夹下的图片文件名,文件扩展名不限于png文件-row-9
需要安装python插件,那就简单安装:
pip install opencv-python
其他的如果需要,依葫芦画瓢进行安装。
如果图片的长宽刚好是3的倍数,那么运行该程序,会将原图等分成9份。否则生成的图片数量会多于9个。后续作为服务器的代码处理中,小编让图片的边长强制成为3的倍数后再分割。再次提醒大家测试前面的代码时,需要留意这个部分。
微信很少发,后续应该是将这9个分图(文件名中从0~8编号)按顺序插入你要发布的微信图框中(对应的1~9)就可以了。
效果如下:
图片编号和顺序
图片名称可以自己在代码中另外设定。按照当前的输出设置,编号及顺序从0~8如上图所示。
刚好要到年底,大家发短信更加频繁,小编后续也许会直接出一个可运行的窗口程序,这样打开程序,挑选文件和输出文件就可以更加方便处理了。不过手边放个电脑确实不太方便。
每个人手边电脑不一定一直有,但是手机一定有,单纯地用软件实现九宫格却不可能让每个人的拿着手机的同时还揣个电脑。想到之前公司的同事提供的一个树莓派,就拿它做个文章了。
如果用树莓派布置一个web服务器,由后台提供这个功能,前端登录后上传图片,然后拿到回传的九宫格图片,不就避免了很多麻烦?至少可以让全家共享了。
树莓派九宫格服务器
step-1: 树莓派建操作系统,建编程环境—乱是因为线多;
step-2:编写调试前后端代码;
step-3:运行web,用手机登录页面,从相册或者文件夹里选图片。
其实也想到app或者微信小程序会提供便捷,但是注册之类的需要是否付费或者提供资质什么的让小编暂不考虑,关键还不会那玩意。
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !