pil python多个图像独立绘制

时间:2016-07-03 22:03:02

标签: python python-2.7 optimization python-imaging-library draw

我有一个数据库,随着时间的推移聚集了(x,y)点以绘制图像。为了更好的数据表示,我想生成图像的帧以及它们应该出现时在(x,y)坐标上的圆圈。我设法使用以下代码执行此操作,但在我看来,它需要太多时间(视频长度为4250帧,并且必须多次完成,以进行单独的数据收集)。我正在寻找的是可能优化最初在内存中加载的Image的使用,因此不会为每一帧再次加载它,而是一劳永逸地加载。

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')

提前感谢您的回复

1 个答案:

答案 0 :(得分:0)

你可以改变......

        var k_LineC = guiVal.GetType().BaseType.GetField("k_LineHeight", BindingFlags.Instance | 
        BindingFlags.Static |
        BindingFlags.NonPublic |
        BindingFlags.Public).GetValue(guiVal);
        Debug.Log (k_LineC + "\n"); // <-- returns 16

...到...

Sub timeToLoop()
    Application.ScreenUpdating = False

    Dim currentVal As Integer, i As Integer
    With Worksheets("Query_Tab")

        For i = 2 To 463
            currentVal = .Range("V34").Value

            .Range("V34:BQ34").Copy Worksheets("Compiled").Range("A" & i & ":" & "AV" & i)

            .Range("V34").Value = currentVal + 1
        Next i

    End With

    Application.ScreenUpdating = True
End Sub

...所以图片只加载一次,但我怀疑这只会带来一点性能提升。