簡體   English   中英

如何使用matplotlib通過壓縮將600 dpi的圖像保存在tiff中?

[英]How can I save a figure in tiff with 600 dpi with compression using matplotlib?

最近,我決定從MATLAB移植到Matplotlib來繪制圖形。 在MATLAB中,我要做的只是轉到文件>導出>渲染,然后選擇600 dpi,然后選擇應用於圖形然后導出。 在Matplotlib中,我正在使用matplotlib庫中的命令savefig作為

matplotlib.pyplot.savefig(fname, dpi=None, facecolor='w', edgecolor='w',
    orientation='portrait', papertype=None, format=None,
    transparent=False, bbox_inches=None, pad_inches=0.1,
    frameon=None).

然后將dpi設置為600,並將.tiff設置為輸出格式。 除了文件很大〜32 mb以外,此方法都可以正常工作。 好吧,顯然,我不能在日記手稿中使用這么大的文件。 我想知道是否有一種將壓縮合並到文件中的方法,以便可以以較小的尺寸獲得圖像文件,而不會降低分辨率。

截至目前,無法為tiff格式添加壓縮。 有一個未解決的問題和一個可行的解決方案,但是自去年5月左右以來沒有取得進展。

在工作的解決方案中,有一個建議的工作流程和報價

...使用MPL生成巨大的TIFF圖像文件,然后將其導入PIL,使用TIFF壓縮將其保存在PIL中,然后丟棄未壓縮的TIFF文件。

scikit-image項目具有一些帶有壓縮功能的 tiff圖像保存功能 ,它可能會根據您的使用情況為您提供幫助。

該期刊很可能接受tiff以外的其他格式。 然后,您可以使用DPI為600的pngjpeg ,基本上可以滿足所有日記目的。

matplotlib版本3.1.0開始,現在可以通過kwarg pil_kwarg保存圖形時直接將參數傳遞給PIL

import matplotlib.pyplot as plt

fig, ax = plt.subplots()

fig.savefig('/tmp/foo.tiff', dpi=600, format="tiff", pil_kwargs={"compression": "tiff_lzw"})

但是要小心輸入錯誤,因為savefig似乎會默默地吞下不受支持的pil_kwargssss ,例如pil_kwargssss ...

此PR中引入了功能,該功能取代了Ignacio Vergara Kausel在其響應中鏈接PR

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM