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

前言

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

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()

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一个使用Python-Tkinter修改图片大小的例子: ```python import tkinter as tk from PIL import Image, ImageTk class ImageResizer: def __init__(self, master): self.master = master self.master.title("Image Resizer") # 创建选择文件按钮 self.choose_file_button = tk.Button(self.master, text="选择文件", command=self.choose_file) self.choose_file_button.pack() # 创建缩放比例标签和微调框 self.scale_label = tk.Label(self.master, text="缩放比例:") self.scale_label.pack() self.scale_var = tk.DoubleVar() self.scale_var.set(1.0) self.scale_spinbox = tk.Spinbox(self.master, from_=0.1, to=10.0, increment=0.1, textvariable=self.scale_var) self.scale_spinbox.pack() # 创建修改大小按钮 self.resize_button = tk.Button(self.master, text="修改大小", command=self.resize_image) self.resize_button.pack() # 创建显示图片的标签 self.image_label = tk.Label(self.master) self.image_label.pack() def choose_file(self): # 弹出文件选择对话框 file_path = tk.filedialog.askopenfilename() if file_path: # 打开并显示图片 self.image = Image.open(file_path) self.photo = ImageTk.PhotoImage(self.image) self.image_label.config(image=self.photo) def resize_image(self): # 获取缩放比例 scale = self.scale_var.get() # 修改图片大小 width, height = self.image.size new_width = int(width * scale) new_height = int(height * scale) self.image = self.image.resize((new_width, new_height)) # 更新显示的图片 self.photo = ImageTk.PhotoImage(self.image) self.image_label.config(image=self.photo) root = tk.Tk() app = ImageResizer(root) root.mainloop() ``` 运行这个程序后,你可以选择一个图片文件,然后使用微调框来修改图片的大小。修改完成后,程序会在窗口中显示修改后的图片。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浮生_Lee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值