我正在开发一个用于Blender 2.69的插件。我正在使用插件中的PIL库的Image模块。PIL Image.save()函数在Blender中失败python
根据我在互联网上找到的说明,我首先安装了PIL for Python33,然后将该站点包的Python文件夹复制到Blender的相同文件夹中。
像Image.open()这样的函数可以像读取Exif数据的函数一样工作。
但是,以下语句失败,并且Blender崩溃。
img.save(outputFileName)
save()方法位于PIL的Image.py模块中。以下是相关部分:
try:
import builtins
except ImportError:
import __builtin__
builtins = __builtin__
...
...
def save(self, fp, format=None, **params):
...
try:
# Following statement fails, and Blender crashes.
save_handler(self, fp, filename)
finally:
if close:
fp.close()
这个语句在使用Python 3.3解释器(而不是Blender解释器)执行时有效。只有在图像格式为PNG时,此声明才适用于Blender。它失败(在搅拌机)的所有其他格式 - TIFF,PGM,JPEG等
我做了一些挖掘,和一对夫妇的问题进行了报道枕头上github上回购近期:(1)(2)
更耐人寻味的是2009年的this forum post,它在Maya的python解释器中报告完全相同的行为。
当发生这种情况时,我在Blender中没有得到堆栈跟踪,因为Blender只是崩溃。我敢打赌,它和Maya python文章中的错误一样。
什么可能导致此问题?除了使用其他图像转换方法之外,还有其他解决方案吗?
考虑附加一个(可能是远程)调试器来获取堆栈踪迹 – goncalopp
[This addon](http://goodspiritgraphics.com/software/products/breakpoint-addon/)可能有助于调试。 [这个问题](http://blender.stackexchange.com/questions/6339/python-commands-from-terminal-arent-working-ubuntu-13-10)有一些提示和其他链接,也可能有助于调试。在gdb(或类似的)中启动搅拌器以在碰撞时捕捉它以查看回溯。 – sambler
@cgohlke:这解释了很多。任何解决方案是否还有其他影像库可以与Blender的python一起使用? – ApoorvaJ