當我嘗試將 pyplot 圖另存為 jpg 時,我不斷收到一個目錄錯誤,指出給定的檔案名不是目錄。我在 Colab 作業。我有一個名為 z_img 的 numpy 陣列并打開了一個 zip 檔案。
import matplotlib.pyplot as plt
from zipfile import ZipFile
zipObj = ZipFile('slices.zip', 'w') # opening zip file
plt.imshow(z_img, cmap='binary')
繪圖作業正常。我做了一個測驗,將影像保存到 Colab 的常規記憶體中,如下所示:
plt.savefig(str(ii) 'um_slice.jpg')
這非常有效,除了我打算在 for 回圈中使用這段代碼。ii 是區分每個影像的索引,將創建數百個影像,因此我希望它們進入 zipfile。現在,當我嘗試將路徑添加到 zipfile 時:
plt.savefig('/content/slices.zip/' str(ii) 'um_slice.jpg')
我得到:NotADirectoryError:[Errno 20] 不是目錄:'/content/slices.zip/150500um_slice.jpg'
我認為這是因為 {}.jpg 字串是檔案名,而不是目錄本身。但我對 Python 很陌生,不知道如何將繪圖放入 zip 檔案中。這就是我想要的。希望有任何建議!
uj5u.com熱心網友回復:
首先,對于任何不是攝影內容(即漂亮和柔和)的內容,JPEG 是錯誤的格式。您將有更好的時間使用不同的檔案格式。PNG 適合像素,SVG 適合矢量圖形(以防您稍后將其嵌入網站!),PDF 也適合矢量。
錯誤訊息非常正確:您不能像目錄一樣保存到 zip 檔案。
多種方式:
- 使用
tempfile模塊mkdtemp創建一個臨時目錄,保存到該目錄中,然后壓縮結果 - 不是保存到檔案名中,而是保存到緩沖區(我猜是BytesIO)并將其附加到壓縮流中(我不太熟悉
ZipFile) - 使用 PDF 作為輸出并簡單地生成多頁 PDF;這并不難,從長遠來看可能會好得多。您仍然可以將該矢量圖形結果轉換為 PNG(或任何其他需要的像素格式 9,但目前,它節省空間,可任意縮放并將所有頁面保存在一個位置。將選定頁面匯入 LaTeX 很容易(重要)事實上,
\includegraphics直接做)或進入網站(pdf.js)。
uj5u.com熱心網友回復:
從檔案中,matplotlib.pyplot.savefig接受二進制檔案類物件。ZipFile.open創建二進制檔案,如物件。這兩個人必須在一起!
with zipobj.open(str(ii) 'um_slice.jpg', 'w') as fp:
plt.savefig(fp)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/406724.html
標籤:
