实用python代码之修改图片大小

news2024/12/23 22:24:39

前言

  通过这段代码可以修改图片的像素尺寸大小
运行截图如下
在这里插入图片描述
代码如下:

import tkinter as tk
from tkinter import filedialog, messagebox, colorchooser
from PIL import Image, ImageDraw


class ImageProcessorApp:
    def __init__(self, root):
        self.root = root
        self.root.title("图片处理程序")

        # 添加选择文件按钮
        self.select_file_button = tk.Button(self.root, text="选择图片文件", command=self.select_file)
        self.select_file_button.pack(pady=10)

        # 添加尺寸选择按钮
        self.select_size_button = tk.Button(self.root, text="选择尺寸", command=self.select_size)
        self.select_size_button.pack(pady=10)

        # 添加处理图片按钮
        self.process_button = tk.Button(self.root, text="处理图片", command=self.process_image)
        self.process_button.pack(pady=20)

        # 初始化变量
        self.input_path = None
        self.output_path = None
        self.new_size = None

    def select_file(self):
        self.input_path = filedialog.askopenfilename(filetypes=[("Image Files", "*.jpg;*.png;*.jpeg")])
        if self.input_path:
            messagebox.showinfo("文件选择", f"选择的文件:{self.input_path}")

    def select_size(self):
        size_dialog = tk.Toplevel(self.root)
        size_dialog.title("选择尺寸")

        label = tk.Label(size_dialog, text="输入新尺寸(宽 x 高):")
        label.pack(padx=10, pady=10)

        self.width_entry = tk.Entry(size_dialog)
        self.width_entry.pack(padx=10, pady=5)

        self.height_entry = tk.Entry(size_dialog)
        self.height_entry.pack(padx=10, pady=5)

        confirm_button = tk.Button(size_dialog, text="确认", command=self.set_size)
        confirm_button.pack(pady=10)

    def set_size(self):
        try:
            width = int(self.width_entry.get())
            height = int(self.height_entry.get())
            self.new_size = (width, height)
            messagebox.showinfo("尺寸选择", f"选择的尺寸:{self.new_size}")
        except ValueError:
            messagebox.showerror("错误", "请输入有效的整数尺寸!")
    def process_image(self):
        if not self.input_path:
            messagebox.showerror("错误", "请先选择图片文件!")
            return
        if not self.new_size:
            messagebox.showerror("错误", "请先选择新尺寸!")
            return

        output_path = filedialog.asksaveasfilename(defaultextension=".jpg",
                                                   filetypes=[("JPEG", "*.jpg"), ("PNG", "*.png")])
        if output_path:
            try:
                original_image = Image.open(self.input_path)
                new_image = original_image.resize(self.new_size)
                if new_image.mode != 'RGB':
                    new_image = new_image.convert('RGB')
                final_image = Image.new("RGB", self.new_size, self.background_color)
                final_image.paste(new_image, (0, 0))
                final_image.save(output_path)
                messagebox.showinfo("完成", f"处理后的图片已保存为:{output_path}")
            except Exception as e:
                messagebox.showerror("错误", f"处理图片时出错:{e}")


if __name__ == "__main__":
    root = tk.Tk()
    app = ImageProcessorApp(root)
    root.mainloop()

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

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

相关文章

审稿速度奇慢的大佬期刊?到底值不值得投?

关注GZH【欧亚科睿学术】,第一时间了解期刊最新动态! 🔥 🔥 🔥 🔥 中科院1区SCI,各指标优秀! 今天小编给大家介绍的是一本计算机科学领域的大佬期刊《Swarm and Evolutionary…

自驾畅游保定:参观总督署,品美食文化

这是学习笔记的第 2490篇文章 前几天跟孩子聊天,孩子说暑假都没出去玩了,暑假旅行的作业咋写?让我有满满的负疚感,去附近的公园、吃点美食不算旅游,得了,得安排一下一日游。 几个月前心心念的去保定&#x…

叉车AI监控影像防撞系统:减少损失,预防碰撞

叉车,这企业物流中的坚实力量,其安全运作是企业稳健前行的基石。在追求高效与效益的浪潮中,如何最大化地规避叉车事故,已悄然跃升为企业管理的头等大事。随着市场监管总局重锤落下,新版《场(厂)内专用机动车辆安全技术…

你一定想看的LVS详细介绍及常见模式(NAT,DR,防火墙标记)实验详解

目录 一、什么是LVS 二、LVS的核心思想 三、 LVS的优势 四、LVS的调度算法 4.1. LVS的调度算法类型 4.2. LVS静态调度算法 4.3. LVS动态调度算法 4.4.在4.15版本内核以后新增调度算法 五、LVS软件相关信息 六、ipvsadm命令 七、 LVS的NAT模式实验详解 7.1实验环境 7.…

使用Github Pages结合MkDocs制作个人网站

目录 环境配置 创建网页仓库 创建Github仓库 创建本地仓库 本地运行网页 配置主题 网站部署到Github docs文件夹介绍 修改主页显示内容 添加新文件 mkdocs.yml文件介绍 其他效果 环境配置 为了正确的安装Mkdocs,需要先下载Python环境 下载地址&#x…

7日 ROI 提升150%,NetMarvel 助力越南厂商 Mirai 旗下解谜休闲手游实现高质增长!

解谜游戏是目前全球最受欢迎的休闲细分品类之一。对于厂商来说,解谜游戏开发成本低、制作周期短,打造成为爆款的几率更大。据 Sensor Tower 发布的数据,解谜游戏在全球市场累计的下载量已经超过500亿次,累计收入也已突破420亿美元…

MongoDB基础学习(1)Mongodb和MySQL的区别

在当今的软件开发领域,数据库的选择是一个至关重要的决策。MongoDB和MySQL作为两种广泛使用的数据库系统,各自拥有其独特的特性和优势。本文将从多个维度深入探讨MongoDB和MySQL之间的区别,帮助读者更好地理解和选择适合自身项目需求的数据库…

SQL面试题练习 —— 计算用户首单是即时单的比例

目录 1 题目2 建表语句3 题解 题目来源:美团。 1 题目 在外卖订单中,有时用户会指定订单的配送时间。现定义:如果用户下单日期与期望配送日期相同则认为是即时单,如果用户下单日期与期望配送时间不同则是预约单。每个用户下单时间…

Web-server日志分析命令

https://gist.github.com/hvelarde/ceac345c662429447959625e6feb2b47 通过状态码获取请求总数 awk {print $9} /var/log/apache2/access.log | sort | uniq -c | sort –rn按照IP的请求数量排序 awk {print $1} /var/log/apache2/access.log | sort | uniq -c | sort -rn |…

第 9 课:隐语联邦学习

隐语水平联邦框架介绍 隐语垂直联邦框架介绍 大模型微调技术 联邦大模型现状 可信执行环境(Trusted Execution Environment) 联邦大模型训练阶段存在的安全问题

“AI妖股”超微电脑业绩发布,股价暴跌

KlipC报道:周二,“AI妖股”服务器制造商超微电脑公布了第四财季财报,财报显示,超微电脑二季度营收53.08亿美元,同比增长142.95%;每股摊薄后盈利,6.25美元,市场预期8.07美元&#xff…

数据可视化Axure大屏原型制作分享

数据可视化大屏通过清晰、直观且易于理解的方式呈现大量复杂数据,已成为各行各业中不可或缺的工具。Axure作为一款功能强大的原型设计工具,为数据可视化大屏的制作提供了强大的支持和丰富的资源。 Axure RP 是一款强大的原型设计工具,非常适…

契约锁大型集团电子签及印控方案分享,无需重复部署、场景可拓展

契约锁在中大型客户市场以客户总量第一、本地化部署量第一领先行业,是汽车、保险、物流、食品、医药、工程、检测、家居等行业的40000多家中大型组织的电子签及印控服务商。 大型集团组织印章数量多则上千、甚至上万,用户规模高达十几万、数十万&#xf…

Ascon加密算法:轻量级加密的新选择

随着物联网、移动通信等领域的迅猛发展,信息安全问题日益凸显。加密算法作为保障信息安全的核心技术,一直备受关注。近年来,一款名为Ascon的加密算法逐渐崭露头角,成为轻量级加密领域的新宠。本文将为您介绍Ascon加密算法的原理、…

爬虫 Web Js 逆向基础:js 基础语法

网络爬虫对 Web Js 逆向主要是为了对各种研究加密参数,调试分析 JavaScript 代码来弄清加密参数的生成逻辑。 对于加密参数的逆向方式,个人认为 “对 js 源码进行补环境来模拟加密参数生成” 这种方法更加方便。 综上,想要做好 Js 逆向&…

如何利用 ChatGPT 提高工作效率?

内容创作与总结: 写作辅助:可以帮助撰写文章、报告、邮件等各种文本,如为招商银行写宣传文案、写论文、写故事等。学习材料生成:能够生成学习材料,如摘要、抽认卡和测验,帮助学生复习和学习课程。评估和考核…

JS爬虫逆向

JS反爬虫根本原因 / 基本原理: (1) 反爬虫: 限制爬虫程序访问服务器资源和获取数据的行为称为反爬虫。 (2)限制手段: 包括但不限于请求限制、拒绝响应、客户端身份验证、文本混淆和使用动态…

网站/APP短信接口调用与第三方短信API接入流程详解

在构建网站、APP或系统时,集成短信服务功能已成为提升用户体验、增强用户互动的重要手段。而这一过程往往依赖于调用第三方短信平台的API接口。今天,我们就来详细探讨一下如何高效地完成这一流程,特别是如何通过短信群发平台实现短信API接口的…

干货|字符串大小写转换用法

Python 中,为了方便对字符串中的字母进行大小写转换,字符串变量提供了 3 种方法,分别是 title()、lower() 和 upper()。 01 Python title()方法 title() 方法用于将字符串中每个单词的首字母转为大写,其他字母全部转为小写&…

Python配置国内镜像源

当我们在使用Python的pip包管理器下载一些第三方库的时候,经常会遇到一些下载速度很慢,或者下载失败的情况。导致这种情况发生是因为我们在使用pip的时候默认的下载源是在国外,所以在我们下载的时候就会由于网络问题而导致下载缓慢或者下载失…