我正在開發一個用於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