利用Python与Flet写一个图片无损放大软件

一、前言:

将上传的图片无损放大2倍、4倍、8倍

二、利用Flet写个前端页面:

 

 三、前端页面代码:

page.title = "图片无所放大"page.vertical_alignment = "center"page.window_width = 500  # window's width is 200 pxpage.window_height = 700  # window's height is 200 pxpage.window_resizable = False  # window is not resizablepage.window_center()page.update()t = flet.Text(value="图片无损放大软件", color="red", size=27, width=300, height=50,weight=flet.FontWeight.W_500, text_align="center")image = flet.Image(src="https://pic.imgdb.cn/item/65af57e8871b83018affa6db.jpg", width=270, height=270,fit=flet.ImageFit.CONTAIN)def radiogroup_changed(e):t1.value = f"你选择的放大倍数是:  {e.control.value}"enlarge_number.value = 0if "2" in e.control.value:enlarge_number.value = 2elif "4" in e.control.value:enlarge_number.value = 4elif "8" in e.control.value:enlarge_number.value = 8page.update()def get_directory_result1(e: FilePickerResultEvent):directory_path1.value = e.files[0].path if e.files else "Cancelled!"image.src = directory_path1.value if directory_path1.value else " "# directory_path1.value = e.path if e.path else "Cancelled!"directory_path1.update()page.update()get_directory_dialog1 = FilePicker(on_result=get_directory_result1)# # Open directory dialog# def get_directory_result2(e: FilePickerResultEvent):#     directory_path2.value = e.path if e.path else "Cancelled!"#     directory_path2.update()## get_directory_dialog2 = FilePicker(on_result=get_directory_result2)# directory_path2 = Text()# Open directory dialogdef get_directory_result3(e: FilePickerResultEvent):directory_path3.value = e.path if e.path else "Cancelled!"directory_path3.update()get_directory_dialog3 = FilePicker(on_result=get_directory_result3)directory_path3 = Text()# hide all dialogs in overlaypage.overlay.extend([get_directory_dialog1, get_directory_dialog3])def button_clicked(e):if directory_path1.value:save_path = os.path.dirname(directory_path1.value) + "\save." + directory_path1.value.split(".")[-1]b.disabled = Truetry:enlarge_image(directory_path1.value, enlarge_number, save_path)# get_img_txt_ret(directory_path1.value, joint_path, directory_path3.value, t1, page, True)t1.value = "图片无所放大已完成。。。。"except Exception as e:t1.value = f"有点问题:{e}"print(e)else:t1.value = "请选择上传与保存文件路径。。。"page.update()t1 = Text()directory_path1 = Text()directory_path3 = Text()enlarge_number = Text()b = flet.ElevatedButton(text="确认提交", on_click=button_clicked, width=100, height=30)page.add(Row([t], alignment="center"),Row([FilledTonalButton("上传图片",icon=icons.FOLDER_OPEN,on_click=lambda _: get_directory_dialog1.pick_files(allow_multiple=True),disabled=page.web,width=180, height=40),directory_path1,],alignment="center"),Row([image],alignment="center"),Row([flet.ElevatedButton(text='放大倍数'),flet.RadioGroup(content=flet.Row([flet.Radio(value="2倍", label="2倍"),flet.Radio(value="4倍", label="4倍"),flet.Radio(value="8倍", label="8倍")]), on_change=radiogroup_changed)],alignment="center"),Row([FilledTonalButton("选择保存图片路径",icon=icons.FOLDER_OPEN,on_click=lambda _: get_directory_dialog3.get_directory_path(),disabled=page.web,width=200, height=40),directory_path3,],alignment="center"),Row([b], alignment="center"),Row([t1], alignment="center"),)

四、Python处理后端图片代码:

"""放大图片"""img = Image.open(image_path)# JPEG格式图片转换为RGB格式if "png" or "PNG" not in image_path:img = img.convert("RGB")# 获取图片尺寸image_h, image_w = img.height, img.widthprint(image_h, image_w)num = int(enlarge_number.value)# 进行无损放大new_size = (image_h * num, image_w * num)resized_img = img.resize(new_size, resample=Image.BICUBIC)# 保存图片resized_img.save(save_path)

五、利用auto-py-to-exe制作exe软件

具体教程参考:

python打包exe实用工具auto-py-to-exe的操作方法

六、页面示例:



七、下载地址:

蓝奏云:https://wwbs.lanpv.com/iTilS1m09wbg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/642706.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《小学生作文辅导》期刊投稿邮箱

《小学生作文辅导》是国家新闻出版总署批准的正规教育类期刊,适用于全国各小学语文老师事业单位及个人,具有原创性的学术理论、工作实践、科研成果和科研课题及相关领域等人员评高级职称时的论文发表(单位有特殊要求除外)。 栏目…

VMware workstation平台下配置Fedora-Server-39-1.5虚拟机网络

VMware workstation平台下配置Fedora-Server-39-1.5虚拟机网络 Fedora包含的软件以自由及开放源码许可来发布,并旨在成为该技术领域的领先者。Fedora在专注创新、抢先集成新技术、与上游Linux社区紧密工作方面拥有良好名声。该文档适用于在VMware workstation平台下…

小土堆pytorch学习笔记001

1、Pytorch环境的配置与安装。 (1)建议安装:Anaconda (2)检查显卡:GPU (3)管理环境(不同版本的pytorch 版本不同): conda create -n pytorch…

Android单元测试(五):网络接口测试

温馨提示:如果你不太熟悉单元测试,可以先看下之前四篇基础框架使用。便于你更好的理解下面的内容。 在平日的开发中,我们用后台写好给我们接口去获取数据。虽然我们有一些请求接口的工具,可以快速的拿到返回数据。但是在一些异常情…

xxe漏洞之scms靶场漏洞

xxe-scms 代码审核 (1)全局搜索simplexml_load_string simplexml_load_string--将XML字符串解释为对象 (2)查看源代码 ID1 $GLOBALS[HTTP_RAW_POST_DATA]就相当于file_get_contents("php://input"); 因此这里就存…

Java面试题之基础篇

文章目录 一:谈谈你对面向对象的理解二:JDK、JRE、JVM三者区别和联系三:和equals比较四:hashCode与equals五:final六:String、StringBuffer、StringBuilder七:重载与重写的区别?八&a…

慎用“from pwn import *”!和re库findall方法重名引发的问题

今天搓一个sage脚本遇到一个很无语的问题,经过调试,发现是pwntools库中的findall方法和re库中的findall方法重名导致的。这两个findall方法的用法完全不一样,稍有不慎就会踩坑。 文章目录 区分问题引发如何规避 区分 re 是 Python 中用于处理…

mockjs使用(2)

mockjs使用(1) 4、Mock 4.1 Mock.mock() 根据数据模版生成模拟数据 Mock.mock( rurl?, rtype?, template|function(options) )问号代表该参数不必填 4.1.1 各参数及其默认值 rurl: 不必填。表示需要拦截的URL,可以使URL字符串或URL正…

Java-SPI机制

SPI基本概念 SPI(Service Provider Interface)是一种服务发现机制,为某个接口寻找服务实现的机制。这有点类似 IoC 的思想,将装配的控制权移交到了程序之外。SPI 将服务接口和具体的服务实现分离开来,将服务调用方和服…

Linux 强大的网络命令:nc命令操作方法

Netcat(或简称nc)是一个强大的网络工具,它在Linux系统中广泛使用,可用于创建各种网络连接。它被描述为"网络的瑞士军刀",因为它的功能非常灵活,可以在网络中执行多种任务。 在大多数Linux发行版中…

速锐得解码匹配吉利枫叶80V/60S远程控制汽车应用B端市场

吉利枫叶80V/60S这两款车平时是不多见的,因为吉利枫叶的定位就的B端市场,包括了公务用车、共享出行、网约车、大客户定制,所以,好风凭借力,送我上青云,吉利在默默地发着一笔小财,或者说拓宽了更…

Go 复合数据类型

1. 数组(array)(OK) 数组数组的概念数组是具有固定长度且拥有零个或多个相同数据类型元素的序列 i. 元素的数据类型相同 ii. 长度固定的序列 iii. 零个或多个元素的序列 与 slice 对比 由于数组的长度固定,所以在 G…

2023年春秋杯网络安全联赛冬季赛 Writeup

文章目录 Webezezez_phppicup Misc谁偷吃了外卖modules明文混淆 Pwnnmanagerbook Reupx2023 CryptoCF is Crypto Faker 挑战题勒索流量Ezdede 可信计算 Web ezezez_php 反序列化打redis主从复制RCE&#xff1a;https://www.cnblogs.com/xiaozi/p/13089906.html <?php c…

教育大模型浪潮中,松鼠Ai的“智适应”故事好讲吗?

“计算机对于学校和教育产生的影响&#xff0c;远低于预期&#xff0c;要改变这一点&#xff0c;计算机和移动设备必须致力于提供更多个性化的课程&#xff0c;并提供有启发性的反馈。” 这是2011年5月份乔布斯与比尔盖茨最后一次会面时的记录&#xff0c;当时的电脑还十分落后…

大型语言模型 (LLM)全解读

一、大型语言模型&#xff08;Large Language Model&#xff09;定义 大型语言模型 是一种深度学习算法&#xff0c;可以执行各种自然语言处理 (NLP) 任务。 大型语言模型底层使用多个转换器模型&#xff0c; 底层转换器是一组神经网络。 大型语言模型是使用海量数据集进行训练…

Yuliverse:引领区块链游戏新篇章!

数据源&#xff1a;Yuliverse Dashboard 作者&#xff1a;lesleyfootprint.network 什么是 Yuliverse Yuliverse 是一款元宇宙游戏的先锋&#xff0c;是一款主打 Explore to earn 和 Social to earn 的链游。 这是一款能让你边玩边赚钱的免费区块链游戏&#xff0c;得到 LI…

如何在WordPress中使用 AI 进行 SEO(12 个工具)

您想在 WordPress 中使用 AI 进行 SEO 吗&#xff1f; 人工智能正在对 SEO 行业产生重大影响。已经有优秀的人工智能 SEO 工具&#xff0c;您可以使用它们来提高您的 SEO 排名&#xff0c;而无需付出太多努力。 在本文中&#xff0c;我们将向您展示如何通过我们精心挑选的工具…

代码随想录第十八天 513 找树左下角的值 112 路径之和 106 从中序与后序遍历序列构造二叉树

LeetCode 513 找树左下角的值 题目描述 给定一个二叉树的 根节点 root&#xff0c;请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root [2,1,3] 输出: 1示例 2: 输入: [1,2,3,4,null,5,6,null,null,7] 输出: 7 思路 1.确定递…

MySQL用户管理

1.用户 1.1 用户信息 mysql> use mysql; Database changed mysql> select host,user,authentication_string from user; --------------------------------------------------------------------- | host | user | authentication_string | --…