изменить размер изображения с помощью tkinter - PullRequest
2 голосов
/ 05 июля 2010

возможно ли изменить размер изображения, используя только tkinter?

Ответы [ 4 ]

4 голосов
/ 05 октября 2011
from PIL import Image

img = Image.open("flower.png")
img = img.resize((34, 26), Image.ANTIALIAS)

Для получения дополнительной информации перейдите к http://effbot.org/imagingbook/image.htm

3 голосов
/ 17 марта 2017

Вы можете изменить размер PhotoImage, используя методы zoom и subsample.Оба метода возвращают новый объект PhotoImage .

from tkinter import *
root = Tk()     #you must create an instance of Tk() first

image = PhotoImage(file='path/to/image.gif')
larger_image = image.zoom(2, 2)         #create a new image twice as large as the original
smaller_image = image.subsample(2, 2)   #create a new image half as large as the original

Однако оба эти метода могут принимать только целочисленные значения в качестве аргументов, поэтому функциональность ограничена.

Можно масштабировать по десятичным значениям, но это медленно и теряет качество.Ниже показано, что можно масштабировать до 1,5x

new_image = image.zoom(3, 3)    #this new image is 3x the original
new_image = image.subsample(2, 2)   #halve the size, it is now 1.5x the original
3 голосов
/ 07 мая 2015

На всякий случай, если кто-нибудь столкнется с этим для дальнейшего использования, так как я сам искал это раньше.Вы можете использовать метод PhotoImage => subsample от tkinter

. Я бы не сказал, что он в определенном смысле действительно изменяет размеры, но если вы посмотрите документацию, он возвращает то же изображение, но пропускает количество пикселей X, указанное в методе.

т.е.:

 import tkinter as tk
 root = tk.Tk()
 canvas = tk.Canvas(root, ....)
 canvas_image = tk.PhotoImage(file = path to some image)
 #Resizing
 canvas_image = canvas_image.subsample(2, 2) #See below for more: 
                                             #Shrinks the image by a factor of 2 effectively

 canvas.create_image(0, 0, image = canvas_image, anchor = "nw")
 self.canvas_image = canvas_image #or however you want to store a refernece so it's not collected as garbage in memory

Итак, скажем, наше исходное изображение было 400x400, теперь оно эффективно в 200x200.Это то, что я использовал, когда мне нужно собрать игру или что-то, что я сделал, и не хочу иметь дело с PIL и проблемами с компиляцией.

Однако, кроме вышеуказанной причины, я бы просто использовал PIL.

1 голос
/ 05 июля 2010

Насколько я знаю (и я давно не прикасался к Tkinter), это инструментарий GUI.Наиболее близким к «изображениям» является класс PhotoImage, который позволяет вам загружать их и использовать в графическом интерфейсе.Если вы хотите отредактировать / изменить изображение, я думаю, вам лучше использовать библиотеку изображений Python (PIL) .

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