首页 > 解决方案 > Python PIL - 绘图线无法按预期工作

问题描述


我想在 640 x 640 图像上画一条直线。有了直线坐标 (x1,y1) 的起点,以像素为单位的直线长度“长度”和角度“角度”,我需要计算直线坐标的终点 (x2,y2)。
为此,我编写了函数 calc_x2y2。对于屏幕右侧的 0(零)角绘制直线,它按预期工作,但不适用于 90 度,它应该是直线,而更靠左看起来像 110 度左右(下图)。我究竟做错了什么?
import math
from PIL import Image, ImageDraw

def calc_x2y2(length, angle, x1,y1):
    x2 = x1 + math.cos(angle)*length
    y2 = y1 + math.sin(angle)*length
    return (x2,y2)

w, h = 640, 640
x1,y1 = w/2, h/2
shape = [(x1,y1), calc_x2y2(300,90,x1,y1)]
# creating new Image object
img = Image.new("RGB", (w, h),(225,225,225))
# create line on the image
img1 = ImageDraw.Draw(img)
img1.line(shape, fill="#401eba", width=5)
img.show()

应该是 90 度的直线,但不是

标签: pythonmath

解决方案


推荐阅读