1.問題描述
這个錯誤出現在我根據 python 極客項目編程 一書的萬花尺一節, 使用pillow模凷保存png圖像時, 導致turtle的繪圖僅保存爲.eps格式文件, 而無法生成.png文件.
2.問題解決
參照網絡上的解決方案, 首先要安裝ghostscript這个軟件, 這个gs的作用簡化來說就是一个兼容于.ps/.eps格式文件的圖像處理引擎, 可進行格式轉化(到pdf/到png等), 在下載界面按操作系統選擇相應版本:
下載後安裝, 記住它的安裝路徑, 找到bin這个子目錄, 如在我的系統中, 如下:
此時, 有用的可執行程序的絕對路徑是:
C:\Program File\gs\gs9.56.1\bin\gswinc64.exe
接下來, 有兩種可選思路解決問題:
1.將這个可執行程序的路徑添加到系統變量PATH, 步驟略, 我沒用這个方法, 因爲我的系統變量夠亂的了;
2.在代碼中指明這个路徑, 好處就是不折騰系統變量, 修改相應代碼, 如下:
import turtle
from PIL import Image, EpsImagePlugin # 導入Eps類, 要用到其中屬性
# ...中間代碼省略...
# 指定gs.exe路徑
EpsImagePlugin.gs_windows_binary = r'C:\Program Files\gs\gs9.56.1\bin\gswin64c.exe'
dateStr = (datetime.now()).strftime("%d%m%Y-%H%M%S")
fileName = 'spiro-' + dateStr # 創建惟一文件名
print('正在保存爲 %s.eps/png' % fileName)
canvas = turtle.getcanvas()
canvas.postscript(file=fileName + '.eps')
img = Image.open(fileName + '.eps')
img.save(fileName + '.png', 'png') # 將.eps文件轉化爲png文件
# ...後續代碼省略...
先指定gs.exe的文件路徑, 這樣pillow模凷才可以完成格式轉化.
這一操作也同時解決了在保存圖片過程中, 產生的權限報錯:
PermissionError: [WinError 5] Access is denied, 正常來說, 這个錯誤不應該由pillow引起, 這一點還沒有完全理解...