是否有任何方法可以在将图像上传到我的 tkinter fyi 窗口之前为用户提供调整图像大小的选项

Posted

技术标签:

【中文标题】是否有任何方法可以在将图像上传到我的 tkinter fyi 窗口之前为用户提供调整图像大小的选项【英文标题】:Is there any method to provide the user an option to resize his image before uploading it to my tkinter fyi window 【发布时间】:2020-04-14 07:01:23 【问题描述】:

我正在开发一个类似于 Instagram 个人资料页面的项目 (tkinter-python),并为用户提供了一个功能来选择需要上传到窗口的图像,但我想要图像的大小将要上传的应该小于特定大小。我应该怎么做才能在上传之前向用户提供调整图像大小的选项?

from tkinter import *
from PIL import Image,ImageTk
import tkinter.messagebox as tmsg
#Profile Photo
image=Image.open(f"name.jpg")
width,height=image.size
area=width*height
if area<=160012:
  photo=ImageTk.Photoimage(image)
  Label(image=photo).place(X=1000,y=2)
else:
  tmsg.showinfo('Crop image','WIDTH X HEIGHT must be smaller than 160012')

【问题讨论】:

tkinter GUI 窗口而不是 tkinter 仅供参考的窗口???? 你为什么不为用户调整图像的大小呢? @acw1668 怎么做 和你的代码一样,检查面积是否大于允许的区域,如果是,调整图像的大小,使其面积小于允许的区域。然后将图像分配给标签。 【参考方案1】:

您可以为用户调整图像大小:

from tkinter import *
from PIL import Image,ImageTk

MAX_AREA = 160012

#Profile Photo
name = 'path/to/user/profile/image'
image = Image.open(f"name.jpg")
width, height = image.size
area = width * height

if area > MAX_AREA:
    # determine the resize ratio
    ratio = (MAX_AREA / area) ** 0.5
    # calculate the resized width and height
    new_w = int(width * ratio)
    new_h = int(height * ratio)
    # resize the image
    image = image.resize((new_w, new_h))
    print(f'Image is resized from widthxheight (area) to new_wxnew_h (new_w*new_h)')

root = Tk()
root.geometry('1000x600')
photo = ImageTk.PhotoImage(image)
Label(image=photo).place(x=1000, y=0, anchor='ne')
root.mainloop()

【讨论】:

以上是关于是否有任何方法可以在将图像上传到我的 tkinter fyi 窗口之前为用户提供调整图像大小的选项的主要内容,如果未能解决你的问题,请参考以下文章

如何显示上传到我的 ftp 文件夹的图像

将图像从GitHub上传到WordPress网站

在将图像发送到服务器之前上传并裁剪图像[关闭]

是否有任何方法可以在服务器中调整图像大小而无需手动操作(上传或下载)

如何在 react 中使用 graphene-django 和 axios 将图像上传到我的服务器?

是否可以在通过表单上传之前预览本地图像?