gpt4 book ai didi

python - python 3+ 的缓冲函数

转载 作者:行者123 更新时间:2023-12-02 01:06:01 25 4
gpt4 key购买 nike

我试图使用 vtk_show 打开一个 vtk 窗口,但是每次我这样做时,我的 Ipython 控制台都会崩溃,显然这是因为 Ipython 无法显示外部窗口,而这正是 vtk_show 所做的。我在谷歌上搜索了一个解决方案,但它是为 python2 编写的(我正在使用 python 3.6.3)。这是我找到的解决方案:

import vtk
from IPython.display import Image

def vtk_show(renderer, width=400, height=300):
"""
Takes vtkRenderer instance and returns an IPython Image with the
rendering.
"""
renderWindow = vtk.vtkRenderWindow()
renderWindow.SetOffScreenRendering(1)
renderWindow.AddRenderer(renderer)
renderWindow.SetSize(width, height)
renderWindow.Render()

windowToImageFilter = vtk.vtkWindowToImageFilter()
windowToImageFilter.SetInput(renderWindow)
windowToImageFilter.Update()

writer = vtk.vtkPNGWriter()
writer.SetWriteToMemory(1)
writer.SetInputConnection(windowToImageFilter.GetOutputPort())
writer.Write()
data = str(buffer(writer.GetResult()))

return Image(data)

我在尝试使用 python2 的 buffer 内置函数时遇到错误,但由于 python3+ 上不存在此函数,我陷入困境..如果有人可以帮助我对此我将不胜感激。提前致谢!

最佳答案

您的代码至少必须修改这两点,才能与 Python 3 具有相同的行为:

因此 data = ... 行应为:

data = bytes(memoryview(writer.GetResult()))

关于python - python 3+ 的缓冲函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50160187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com