python显示图片大小如何改变_如何在python tkinter中显示已调整大小的图像

我正在使用Tkinter开发一个使用Tkinter学习图像处理的GUI。 GUI的流程将作为如何在python tkinter中显示已调整大小的图像

加载图像(jpg | PNG | ...)=>调整大小/缩略图(240 * 240)=>预览图像

from Tkinter import *

import PIL

class Window:

def __init__(self, master):

master.title("Image Processing test")

master.minsize(800, 400)

from PIL import Image

im = Image.open("IMG_0562.png")

size = 240, 240

im.thumbnail(size)

p = im.tobytes()

# photo = PhotoImage(file="IMG_0562.gif")

# photo = BitmapImage(data=p)

w = Label(root, image=photo, width=240, height=240).grid(row=20, column=2)

self.photo = photo

root = Tk()

window = Window(root)

root.mainloop()

我的问题是我不能以适当的格式获取图像以在Label中使用它。由于Label只接受PhotoImage和BitmapImage。 PhotoImage不支持png或jpg文件。所以我使用PIL的Image加载和调整我的彩色图像。我试过Image.tobitmap()和Image.tobytes(),但在这种情况下没有用。

2017-08-04

lkdhruw

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 `tkinter` 的 `Canvas` 组件根据窗体大小自动缩放并显示图像,你可以使用 `PIL` 库来加载图像,并使用 `Canvas` 组件的 `create_image` 方法来在其显示图像。然后,你可以使用 `bind` 方法来绑定窗体大小变化事件,以更新图像大小和位置。 下面是一个示例程序,它可以在窗体大小变化时自动缩放并在 `Canvas` 组件显示图像: ```python import tkinter as tk from PIL import Image, ImageTk class App: def __init__(self, master): self.master = master self.master.title("自动缩放图像") self.master.geometry("400x400") self.canvas = tk.Canvas(self.master) self.canvas.pack(fill=tk.BOTH, expand=True) self.image = Image.open("image.jpg") self.photo = ImageTk.PhotoImage(self.image) self.canvas_image = self.canvas.create_image(0, 0, image=self.photo, anchor=tk.NW) self.master.bind("<Configure>", self.on_resize) def on_resize(self, event): w, h = event.width, event.height self.image = self.image.resize((w, h)) self.photo = ImageTk.PhotoImage(self.image) self.canvas.config(width=w, height=h) self.canvas.itemconfigure(self.canvas_image, image=self.photo) if __name__ == "__main__": root = tk.Tk() app = App(root) root.mainloop() ``` 在上面的程序,我们首先创建了一个 `Canvas` 组件,并使用 `pack` 方法将其放置在窗口心。接着,我们创建了一个 `Image` 对象,并使用它创建了一个 `PhotoImage` 对象,这个对象可以被 `create_image` 方法用来在 `Canvas` 显示图像。我们还使用了 `create_image` 方法来创建一个 `Canvas` 图像对象,并将 `PhotoImage` 对象作为参数传递给它。 最后,我们使用 `bind` 方法来绑定 `<Configure>` 事件,这个事件会在窗口大小变化时触发。我们在事件处理程序,获取窗口的新大小,然后使用 `resize` 方法来缩放图像,使其适应新的窗口大小。接着,我们使用 `Canvas` 对象的 `config` 方法来更新 `Canvas` 的大小,并使用 `itemconfigure` 方法来更新 `Canvas` 图像对象的大小和位置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值