一、原理- q% Z' T- N: Y* f, I
1、用Python制作的九宫格图像生成器包装exe文件,用户无需部署安装Python的开发环境,即可在当地运行该程序,快速生成九宫格图像。$ s/ _0 y9 D7 w ]9 S: i
2、用PIL库不断画小区域,切下来存储成新的小图片。
: Y; }3 z5 |% o7 U# h1 h二、实例
9 d$ h8 Z/ A: b) k 假设每一个格子的宽和高分别是w、h,那么第row行(从0开始计数),第col列(从0开始计数)的格子左上角坐标和右下角坐标分别是(col * w, row * h),(col * w + w, r * h + h)。) F( G0 S9 ]: l1 m( B- |( v
- t(width / 3) #因为朋友圈一行放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_width,(j+1)*item_width,(i+1)*item_width)
- box_list.append(box)
- image_list = [image.crop(box) for box in box_list]
- return image_list
-
- #保存图片
- def save_images(image_list):
- index = 1
- for image in image_list:
- image.save(str(index) + '.png', 'PNG')
- index += 1
-
-
- # 点击按钮,实现图片分割
- def cTofClicked():
- file_path=str(entryCd.get()) # 获取要进行分割的图片路径
- image = Image.open(file_path)
- #image.show()
- image = fill_image(image)
- image_list = cut_image(image)
- save_images(image_list)
- labelcTof.config(text="九宫格图片已生,请在程序所在目录查看!")
-
- # 窗体
- top=tk.Tk()
- top.title('九宫格图片生成器')
- labelcTof=tk.Label(top,text="请输入要进行转换的图片路径:",height=4,\
- width=40,fg="blue")
- labelcTof.pack()
- entryCd=tk.Entry(top,text='0') # 文本框,获取图片路径
- entryCd.pack()
- label_tip=tk.Label(top,text="请检查图片路径是否输入正确!",height=2,\
- width=40,fg="gray")
- label_tip.pack()
- btnCal=tk.Button(top,text="点击生成九宫格图片",fg="red",bg="yellow",command=cTofClicked) # 点击回调函数
- btnCal.pack()
-
- top.mainloop() # 执行主循环
|