簡體   English   中英

估計圖像的最終大小,而無需使用Python將其寫入磁盤

[英]Estimate final size of image without writing it to disk with Python

假設我使用matplotlib生成PNG圖像。 確定圖像大小和DPI( x_size, y_size, dpi_val )的參數由我設置(參見下面的MWE)

有沒有辦法至少近似圖像文件創建后的大小, 而無需將文件寫入磁盤


MWE

import matplotlib.pyplot as plt
import numpy as np

# Figure parameters.
x_size, y_size, dpi_val = 10, 15, 300

x, y = np.random.uniform(0., 10., 100), np.random.uniform(0., 10., 100)
plt.figure(figsize=(x_size, y_size))
plt.scatter(x, y)
plt.savefig('test.png', dpi=dpi_val)

您應該能夠(未經測試,但從閱讀文檔)傳遞類文件對象而不是文件名。 這樣的對象是一個StringIO對象,您可以在“寫入”文件后檢查其長度。

import StringIO
f = StringIO.StringIO()
plt.savefig(f, ...)
size = len(f.getvalue())

類文件對象是與文件具有相同API的任何對象,因此您也可以(再次未經測試)使用只計算其輸入的write方法定義類。

class Buffer(object):
    def __init__(self):
        self.size = 0
    def write(self, bytes):
        self.size += len(bytes)

f = Buffer()
plt.savefig(f, ...)
size = f.size

(您為Buffer定義的方法取決於savefig實際嘗試調用的內容;我省略了我認為未使用的方法。)

暫無
暫無

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

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