热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python序列图分割与可视化编程入门教程

本文介绍了如何使用Python进行序列图的快速分割与可视化。通过一个实际案例,详细展示了从需求分析到代码实现的全过程。具体包括如何读取序列图数据、应用分割算法以及利用可视化库生成直观的图表,帮助非编程背景的用户也能轻松上手。

python切分序列图可视化程序[Python基础]

一.起因

设计师小姐姐要求快速切分序列图

二.直接上可视化代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2020/11/18 12:51 
# @Author : ywy
# @Platform:

from tkinter.filedialog import *
import windnd
from tkinter.messagebox import showerror,showinfo
from PIL import Image
def splitimage(src, rownum, colnum):
    src =src.strip()
    rownum = int(rownum)
    colnum = int(colnum)
    img = Image.open(src)
    w, h = img.size
    if rownum <= h and colnum <= w:
        print("Original image info: %sx%s, %s, %s" % (w, h, img.format, img.mode))
        print("开始处理图片切割, 请稍候...")

        s = os.path.split(src)
        fn = s[1].split(".")
        basename = fn[0]
        ext = fn[-1]
        dstpath=basename
        if not  os.path.exists(dstpath):
            os.makedirs(dstpath)
        num = 0
        rowheight = h // rownum
        colwidth = w // colnum
        for r in range(rownum):
            for c in range(colnum):
                box = (c * colwidth, r * rowheight, (c + 1) * colwidth, (r + 1) * rowheight)
                img.crop(box).save(os.path.join(dstpath, f"{basename}_{num}.{ext}"), ext)
                num = num + 1
        print("图片切割完毕,共生成 %s 张小图片。" % num)
        return f"图片切割完毕,共生成 {num} 张小图片存放在当前程序目录{dstpath}文件夹下"

    else:
        print("不合法的行列切割参数!")
        return "不合法的行列切割参数!"

root_1 = Tk()
rownum = StringVar()
colnum = StringVar()
z = StringVar()
root_1.title("图片切割")

count = Label(root_1, text="切割行数")
count.grid(row=0, column=0)
enter_1 = Entry(root_1, state="normal", textvariable=rownum,bd=2,width=50)
enter_1.grid(row=0, column=1)

count = Label(root_1, text="切割列数")
count.grid(row=1, column=0)
enter_2 = Entry(root_1, state="normal", textvariable=colnum,bd=2,width=50)
enter_2.grid(row=1, column=1)

def dragged_files(files):
    src =files[0].decode("gbk")
    rownum = enter_1.get()
    colnum = enter_2.get()
    print(src,rownum,colnum)
    if rownum and colnum:
        showinfo("提示",splitimage(src,rownum,colnum))
    else:
        showerror("错误提示","切割行数和切割列数必须有值")


count = Label(root_1, text="拖拽你的图片到窗口")
count.grid(row=2, column=0)
windnd.hook_dropfiles(root_1,func=dragged_files)

root_1.mainloop()


推荐阅读
author-avatar
手机用户2502939987
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有