Диплайнинг всего изображения в метке определенного размера в tkinter - PullRequest
0 голосов
/ 09 июня 2019

Я получаю изображение из системы, и мне нужно отобразить на нем новый ярлык при нажатии кнопки «Загрузить изображение». Мне нужно отобразить это полное изображение в метке с именем «canvas» определенного размера, но я получаю только часть изображения.

мой код работает нормально, только часть изображения отображается.

from tkinter import *
from tkinter import filedialog
from PIL import ImageTk ,Image
import os

root = Tk()
root.title("Images")

def Clicked():
    filename = filedialog.askopenfilename(initialdir=os.getcwd(), title="Select file", filetypes=(("png images", ".png, .jpg"), ("all files", "*.*")))
    if not filename:
        return
    image = ImageTk.PhotoImage(Image.open(filename))   #need to resize this image
    loaded = Label(frame, text = "\n\n\nLoaded Image\n", font = ('Arial',10,'bold')).grid(row = 5)
    canvas = Label(frame, width = 150, height =150, relief = "groove", borderwidth = 2, image = image)
    canvas.image = image
    canvas.grid(row = 6)


frame = Frame(root, relief = "solid", borderwidth = 1)
frame.pack()



label = Label(frame, text = "Content Based Image Retrieval\n", font = ('Arial', 15), padx = 10, pady =10).grid(row = 0)


content = Label(frame, text = "Contents\n\n",font=('Arial',10), padx = 20).grid(row = 1 , column = 0, sticky = W)

loadImg = Button(frame, text = "Load Image", relief = "groove", padx = 10, pady = 5, command = Clicked).grid( row = 2)

blank = Label(frame, text ="").grid(row = 3)

searchImg = Button(frame, text = "Search Image", relief = "groove", padx = 6, pady = 5).grid( row = 4)

blank = Label(frame, text ="").grid(row = 7)

root.mainloop()

1 Ответ

0 голосов
/ 09 июня 2019

Единственное решение - использовать какую-то другую библиотеку (например, Pillow), чтобы изменить размер изображения перед его отображением. Единственная способность tkinter изменять размеры изображений - это масштабировать их в два раза.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...