如何在 PIL ImageDraw 中增加多边形的厚度
How to increase thickness of polygon in PIL ImageDraw
我正在使用 PIL,我在图像上绘制了贝塞尔曲线,我想增加该曲线的厚度。这是我的代码:
for image in images:
img = Image.open("/home/ec2-user/virtualenvs/axonator-production/axonator/media/app_data/ax_picture_20150831_213704.png").convert('RGBA')
for annotation in image["annotations"]:
xys = []
frame = annotation["frame"].split(",")
frame = [int(float(frame[0])),int(float(frame[1])),int(float(frame[2])),int(float(frame[3]))]
frame_location = (frame[0],frame[1])
frame_size = (5000 , 5000)
for point in annotation["path"]:
pt = point["points"].split(",")
xys.append((pt[0],pt[1]))
bezier = make_bezier(xys)
points = bezier(ts)
curve = Image.new('RGBA', frame_size)
import pdb; pdb.set_trace()
curve_draw = ImageDraw.Draw(curve)
curve_draw.polygon(points,outline="red")
curve_draw.text(points[0],str(order))
order = order + 1
img.paste(curve,frame_location,mask = curve)
img.save('out.png')
函数 draw.polygon()
不能像 line()
那样接受 'width' 参数。
除此之外,line()
将采用一系列点并绘制折线。
线尾会很难看,但是在线尾画圆圈,可以让它们变得漂亮!
下面的代码绘制了一个漂亮的粗红色多边形。
from PIL import Image, ImageDraw
points = (
(30, 40),
(120, 60),
(110, 90),
(20, 110),
(30, 40),
)
im = Image.new("RGB", (130, 120))
dr = ImageDraw.Draw(im)
dr.line(points, fill="red", width=9)
for point in points:
dr.ellipse((point[0] - 4, point[1] - 4, point[0] + 4, point[1] + 4), fill="red")
im.save("polygon.png")
我正在使用 PIL,我在图像上绘制了贝塞尔曲线,我想增加该曲线的厚度。这是我的代码:
for image in images:
img = Image.open("/home/ec2-user/virtualenvs/axonator-production/axonator/media/app_data/ax_picture_20150831_213704.png").convert('RGBA')
for annotation in image["annotations"]:
xys = []
frame = annotation["frame"].split(",")
frame = [int(float(frame[0])),int(float(frame[1])),int(float(frame[2])),int(float(frame[3]))]
frame_location = (frame[0],frame[1])
frame_size = (5000 , 5000)
for point in annotation["path"]:
pt = point["points"].split(",")
xys.append((pt[0],pt[1]))
bezier = make_bezier(xys)
points = bezier(ts)
curve = Image.new('RGBA', frame_size)
import pdb; pdb.set_trace()
curve_draw = ImageDraw.Draw(curve)
curve_draw.polygon(points,outline="red")
curve_draw.text(points[0],str(order))
order = order + 1
img.paste(curve,frame_location,mask = curve)
img.save('out.png')
函数 draw.polygon()
不能像 line()
那样接受 'width' 参数。
除此之外,line()
将采用一系列点并绘制折线。
线尾会很难看,但是在线尾画圆圈,可以让它们变得漂亮!
下面的代码绘制了一个漂亮的粗红色多边形。
from PIL import Image, ImageDraw
points = (
(30, 40),
(120, 60),
(110, 90),
(20, 110),
(30, 40),
)
im = Image.new("RGB", (130, 120))
dr = ImageDraw.Draw(im)
dr.line(points, fill="red", width=9)
for point in points:
dr.ellipse((point[0] - 4, point[1] - 4, point[0] + 4, point[1] + 4), fill="red")
im.save("polygon.png")