pil python 多个图像独立绘制
pil python multiple Image independent draw
我有一个数据库,其中包含随时间收集的 (x, y) 点以绘制在图像上。为了更好的数据表示,我想在它们应该出现时生成图像帧加上 (x, y) 坐标上的圆圈。我设法用下面的代码做到了这一点,但在我看来,它花费了太多时间(视频长 4250 帧,必须多次完成,用于单独的数据收集)。我正在寻找的是对最初加载到内存中的图像的使用进行可能的优化,因此它不会为每一帧再次加载,而是一劳永逸。
subprocess.call(['mkdir', install_path + 'users/' + user.name + '/temp'])
# creates a temporary folder for the pngs generated
r = 8
for i in range(0, 4250, 1):
valaro = Image.open('pngs/valaro_800.png')
draw = ImageDraw.Draw(valaro)
for d in data:
if (d.reeltime + 5) * 25 > i > (d.reeltime - 5) * 25:
# interpret the data to fit on the picture
xl = d.x * 2.91 + 392
yl = d.y * -3.06 + 434
draw.ellipse((xl - r, yl - r, xl + r, yl + r), fill='green')
valaro.save('users/' + user.name + '/temp/' + user.name + str(i) + '.png')
提前感谢您的回复
你可以改变...
for i in range(0, 4250, 1):
valaro = Image.open('pngs/valaro_800.png')
...到...
original = Image.open('pngs/valaro_800.png')
for i in range(0, 4250, 1):
valaro = original.copy()
...所以图像只加载一次,但我怀疑这只会提供很小的性能提升。
我有一个数据库,其中包含随时间收集的 (x, y) 点以绘制在图像上。为了更好的数据表示,我想在它们应该出现时生成图像帧加上 (x, y) 坐标上的圆圈。我设法用下面的代码做到了这一点,但在我看来,它花费了太多时间(视频长 4250 帧,必须多次完成,用于单独的数据收集)。我正在寻找的是对最初加载到内存中的图像的使用进行可能的优化,因此它不会为每一帧再次加载,而是一劳永逸。
subprocess.call(['mkdir', install_path + 'users/' + user.name + '/temp'])
# creates a temporary folder for the pngs generated
r = 8
for i in range(0, 4250, 1):
valaro = Image.open('pngs/valaro_800.png')
draw = ImageDraw.Draw(valaro)
for d in data:
if (d.reeltime + 5) * 25 > i > (d.reeltime - 5) * 25:
# interpret the data to fit on the picture
xl = d.x * 2.91 + 392
yl = d.y * -3.06 + 434
draw.ellipse((xl - r, yl - r, xl + r, yl + r), fill='green')
valaro.save('users/' + user.name + '/temp/' + user.name + str(i) + '.png')
提前感谢您的回复
你可以改变...
for i in range(0, 4250, 1):
valaro = Image.open('pngs/valaro_800.png')
...到...
original = Image.open('pngs/valaro_800.png')
for i in range(0, 4250, 1):
valaro = original.copy()
...所以图像只加载一次,但我怀疑这只会提供很小的性能提升。