python - 如何将画布上的图像旋转 90 度
问题描述
画布上有一个加载的图像,我必须将其旋转 90 度。但是当我旋转它时,它不适合画布并且背景颜色变黑。我希望图像正确地适合画布。
import tkinter as tk
from tkinter import *
from PIL import Image,ImageTk
class SimpleApp(tk.Frame):
def __init__(self, master, filename, **kwargs):
self.master = master
self.filename = filename
tk.Frame.__init__(self, master)
self.canvas = tk.Canvas(master, width=1500, height=1200,bg='white')
self.canvas.grid(row=0,column=0,sticky=(N,W,E,S))
self.image = Image.open("C:\\Users\\Sripad Jevala\\Desktop\\RESIZE\\Cat1_1.jpg")
angle = 90
self.tkimage = ImageTk.PhotoImage(self.image.rotate(angle))
canvas_obj = self.canvas.create_image(550, 350, image=self.tkimage)
root = tk.Tk()
root.grid_columnconfigure(0, weight=1)
root.grid_rowconfigure(0, weight=1)
app = SimpleApp(root, "C:\\Users\\Sripad Jevala\\Desktop\\RESIZE\\Cat1_1.jpg")
root.mainloop()
解决方案
您需要设置expand=1
:
self.tkimage = ImageTk.PhotoImage(self.image.rotate(angle, expand=1))
推荐阅读
- php - Laravel:根据 cookie 值有条件地渲染模式
- iis - 服务器未收到应用程序的响应 - IIS 日志显示错误 1236
- three.js - Three.js:如何防止部分网格在较大距离处消失
- google-bigquery - BigQuery 中的优雅时区转换
- c++ - 在 Windows Server 2016 上使用 C++/WinRT
- ios - UILongPressGestureRecognizer 不适用于 numberOfTapsRequired 和 minimumPressDuration 属性
- java - 使用日期来管理订阅。安卓。火力基地
- powershell - 在计划任务操作中分配变量时出错
- reactjs - CXJS - 如何从 Gridcell 中的链接 onclick 获取 record.id
- python - 使用 Session.Merg() 时 SQLAlchemy 崩溃脚本