Как повернуть картинку в tkinter
С помощью библиотеки PIL (Pillow). В tkinter встроенных средств для поворота картинок нет.
12 июн 2022 в 12:09
12 июн 2022 в 12:39
а как добавить картинку на экран с помощью PIL
12 июн 2022 в 12:50
@Codex «добавить на экран» можно с помощью tkinter. Но если перед этим нужно повернуть — это делается с помощью PIL, в памяти, а не на экране.
15 июн 2022 в 8:04
0
Сортировка: Сброс на вариант по умолчанию
Знаете кого-то, кто может ответить? Поделитесь ссылкой на этот вопрос по почте, через Твиттер или Facebook.
- python
- tkinter
Как в python tkinter повернуть фигуру или картинку?
def left(event):
global line1, line2, line3, line4, alpha, d, pos1, pos2, pos3, pos4
for i in range(4):
alpha[i] -= 1
canvas.delete(line1, line2, line3, line4)
pos1 = [100+d*math.cos(math.radians(alpha[0])),
100+d*math.sin(math.radians(alpha[0]))]
pos2 = [100+d*math.cos(math.radians(alpha[1])),
100+d*math.sin(math.radians(alpha[1]))]
pos3 = [100+d*math.cos(math.radians(alpha[2])),
100+d*math.sin(math.radians(alpha[2]))]
pos4 =[100+d*math.cos(math.radians(alpha[3])),
100+d*math.sin(math.radians(alpha[3]))]
line1 = canvas.create_line(pos1[0], pos1[1], pos2[0], pos2[1])
line2 = canvas.create_line(pos2[0], pos2[1], pos3[0], pos3[1])
line3 = canvas.create_line(pos3[0], pos3[1], pos4[0], pos4[1])
line4 = canvas.create_line(pos4[0], pos4[1], pos1[0], pos1[1])
def right(event):
global line1, line2, line3, line4, alpha, d, pos1, pos2, pos3, pos4
for i in range(4):
alpha[i] += 1
canvas.delete(line1, line2, line3, line4)
pos1 = [100+d*math.cos(math.radians(alpha[0])),
100+d*math.sin(math.radians(alpha[0]))]
pos2 = [100+d*math.cos(math.radians(alpha[1])),
100+d*math.sin(math.radians(alpha[1]))]
pos3 = [100+d*math.cos(math.radians(alpha[2])),
100+d*math.sin(math.radians(alpha[2]))]
pos4 =[100+d*math.cos(math.radians(alpha[3])),
100+d*math.sin(math.radians(alpha[3]))]
line1 = canvas.create_line(pos1[0], pos1[1], pos2[0], pos2[1])
line2 = canvas.create_line(pos2[0], pos2[1], pos3[0], pos3[1])
line3 = canvas.create_line(pos3[0], pos3[1], pos4[0], pos4[1])
line4 = canvas.create_line(pos4[0], pos4[1], pos1[0], pos1[1])
root = Tk()
canvas = Canvas(root, width=200, height=200)
canvas.pack()
alpha = [60, 120, 240, 300]
d=50
pos1 = [100+d*math.cos(math.radians(alpha[0])),
100+d*math.sin(math.radians(alpha[0]))]
pos2 = [100+d*math.cos(math.radians(alpha[1])),
100+d*math.sin(math.radians(alpha[1]))]
pos3 = [100+d*math.cos(math.radians(alpha[2])),
100+d*math.sin(math.radians(alpha[2]))]
pos4 =[100+d*math.cos(math.radians(alpha[3])),
100+d*math.sin(math.radians(alpha[3]))]
line1 = canvas.create_line(pos1[0], pos1[1], pos2[0], pos2[1])
line2 = canvas.create_line(pos2[0], pos2[1], pos3[0], pos3[1])
line3 = canvas.create_line(pos3[0], pos3[1], pos4[0], pos4[1])
line4 = canvas.create_line(pos4[0], pos4[1], pos1[0], pos1[1])
canvas.focus_set()
canvas.bind(«», right)
canvas.bind(«», left)
root.mainloop()
Как импортировать и повернуть изображение с помощью matplotlib?
Примеры того, как импортировать и вращать изображение с помощью matplotlib.
Импорт изображения с помощью matploitlib
В matplotlib вы можете напрямую импортировать изображение следующим образом:
Code language: JavaScript (javascript)from matplotlib import image from matplotlib import pyplot as plt img = image.imread("fav.jpeg") print(type(img))
Code language: HTML, XML (xml)class 'numpy.ndarray'>
Code language: CSS (css)print(img.shape)
(1280, 850, 3)
Отрисовка изображения с помощью matploitlib
Далее мы можем построить график с этим изображением с помощью imshow:
Code language: CSS (css)plt.imshow(img) plt.show()
Поворот изображения с помощью scipy.ndimage
Чтобы повернуть изображение, одним из решений является использование scipy:
Code language: PHP (php)from PIL import Image from matplotlib import pyplot as plt import scipy.ndimage as ndimage data = Image.open("fav.jpg") angle = 45 # в градусах new_data = ndimage.rotate(data, angle, reshape=True) plt.imshow(new_data) plt.savefig("fav_rotated.png", bbox_inches='tight', dpi=100) plt.show()
Примечание: “reshape = True” автоматически подгоняет размер изображения по ширине и высоте.
Code language: PHP (php)from PIL import Image from matplotlib import pyplot as plt import scipy.ndimage as ndimage data = Image.open("fav.jpg") angle = 45 # в градусах new_data = ndimage.rotate(data, angle, reshape=False) plt.imshow(new_data) plt.savefig("fav_rotated.png", bbox_inches='tight', dpi=100) plt.show()
Как работает функция np.flip при работе с изображениями
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нем неправильно.
Необходимо обновить браузер или попробовать использовать другой.
Suslik
Новичок
Пользователь
Сен 26, 2020 1 0 1
Я новичок в Python. Открываю встроенный справочник Python, но ничего не понятно. Хочу перевернуть изображение с помощью np.flip, но не знаю, что делать. Заранее благодарю за помощь!