作者: 锋小刀
微信搜索【Python与Excel之交】关注我的公众号查看更多内容
千图成像也就是用N张图片组成一张图片的效果。制作方法有很多的,最常见的如用ps、懒人图云、foto-mosaik-edda这些制作。
千图成像的效果我大致分为两类:一为直接用N张图片根据底图的像素颜色、大小,一张张的组成底图,如foto-mosaik-edda;二为用N张图片根据底图的像素大小,组成一张与底图大小相仿的图片,再把二者合成,经调整透明度而成的图片,如ps。
第一种算是真正意义的千图成像,但如果选的图片不够底图的像素颜色匹配,就会造成生成的图片畸形,但如果选择的图片够好,最终的效果会非常好;第二种的效果就比较平淡了,但对选择的图片没什么要求,生成的图片比较正常。
二者的效果各有千秋,而本文使用python实现的是第二种方法,最后制成GUI。
前置
本文使用PySimpleGUI进行GUI设计,PIL、numpy、random 进行图片处理,os进行文件操作:
import PySimpleGUI as sg
from PIL import Image
import os
import numpy as np
import random
相关库使用pip命令安装即可:
pip install 库名
GUI制作
为了以后方便使用,不用一次次跑程序,而在原有的程序基础上进行GUI制作,最后打包成.exe可执行文件。
GUI界面设计
对于GUI界面的功能只需要设定五个功能即可:
- 选择底图功能
- 选择组图功能
- 事件展示区域
- 启动工具按钮
- 退出工具按钮
最终设计代码如下:
# 主题设置
sg.theme('LightBrown3')
# 布局设置
layout = [
[sg.Frame(layout=[
[sg.InputText(key='image_file', size=(32, 1), font=("微软雅黑", 10), enable_events=True),
# 设定能选择的图片格式
sg.FileBrowse('选择底图',
file_types=(("Text Files", "*.png*"), ("Text Files", "*.jpg*"), ("Text Files", "*.jpeg*")),
font=("微软雅黑", 12)),
sg.Button('选择组图', font=("微软雅黑", 12)),
],
],
title