本文主要记录通过Python以及其第三方库pillow来批量生成图片九宫格,其主要思想如下:判断一张图片是不是正方形的,若不是,则获取图片最短的一边为边长,以该边长截取图片的中间部分正方形区域,然后再通过边长将该图片等分为九个正方形区域截取并保存。用到的pillow的Image模块的函数有open,size,crop, save。
------->>>>>>代码如下<<<<<
# 九宫格.py# python生成九宫格图片from PIL import Imageimport sys, os# 若图片不是正方形先以最短边为边长截取图片中间部分为正方形def Img_to_square(img_path): image = Image.open(img_path) #导入图片 w, h = image.size #获取图片长宽 if w!=h: l = h if w > h else w #获取最短边 image = image.crop((int(w/2-l/2), int(h/2-l/2), int(w/2+l/2), int(h/2+l/2))) #截取最中间部分 else: pass return image# 将正方形图片剪切为九宫格def crop_image(image): w, h = image.size l = int(w/3) pic = [] for i in range(0,3): for j in range(0,3): img = image.crop((j*l, i*l, j*l+l, i*l+l)) #依次截取相应区域 pic.append(img) return pic# 保存图片def save_image(pic,count): index = 0 path = os.path.dirname(__file__).replace('\\', '/') #获取py当前路径 os.system('md '+path.replace('/', '\\')+'\\九宫格'+str(count)) #新建文件夹 for i in pic: #依次保存每个图片 index += 1 i.save(path+'/九宫格'+str(count)+'/'+str(index)+'.png', 'PNG')if __name__ == '__main__': img_path = sys.argv[1:] # 获取图片路径 for i in img_path: img = Img_to_square(i.replace('\\', '/')) pic = crop_image(img) save_image(pic, img_path.index(i))
------->>>>>>使用方法<<<<<
在cmd命令行中拖拽进上面的py文件,加空格,拖拽进要生成九宫格的图片回车即可在py文件所在的目录下生成包含九宫格图片的文件夹。
[py文件][空格][图片][回车]