У меня возникла проблема с сохранением изображения после его вращения. Я имею в виду, когда я вызываю функцию save после поворота изображения, ничего не происходит. Старое изображение остается прежним, и эта проблема возникает с моей функцией сохранения. Я думаю, проблема кроется в моей функции вращения:Python PIL сохранить изображение после поворота
def right90 (root, image, panel, filemenu):
image = image.transpose(Image.ROTATE_90)
image1 = ImageTk.PhotoImage(image)
root.geometry("%dx%d+%d+%d" % (image.size[0], image.size[1], 0, 0))
panel.configure(image = image1)
panel.pack(side='top', fill='both', expand='yes')
panel.image = image1
Ниже приведена функция сохранения, которую я использую. Думаю, у меня нет никаких проблем.
def save(image, filename):
image.save(filename)
Однако я не могу понять, где лежит проблема. Я действительно надеюсь, что кто-то поможет мне найти его. Благодарю.
Edited
Ниже функция, где я объявляю переменные глобальными. Это используется для открытия файла изображения и использования информации файла для присвоения значения переменным.
def display(root):
global filename
filename = askopenfilename(filetypes=[("All Files","*"),("All Picture Files","*bmp; *.png; *.jpg; *.jpeg; *.jpe; *.tif; *.tiff")])
global image
global panel
try:
image = Image.open(filename)
image1 = ImageTk.PhotoImage(file=filename)
root.geometry("%dx%d+%d+%d" % (image.size[0], image.size[1], 0, 0))
panel.configure(image = image1)
panel.pack(side='top', fill='both', expand='yes')
panel.image = image1
except NameError:
image = Image.open(filename)
image1 = ImageTk.PhotoImage(file=filename)
root.geometry("%dx%d+%d+%d" % (image.size[0], image.size[1], 0, 0))
panel= Label(root, image = image1)
panel.pack(side='top', fill='both', expand='yes')
panel.image = image1
И следующий код, который я написал для вызова функции rotate. В случае, если это кому-то нужно.
rotatemenu.choices.add_command(label="rotate right 90°", command = lambda:img.right90(root, image, panel, filemenu))
Не может быть, что 'image1 = ImageTk.PhotoImage (изображение)' берет 'образ' из вызова функции, а не тот, который описан в строке чуть выше? Попробуйте изменить его имя? – Junuxx