![](/img/trans.png)
[英]How to change image format without writing it to disk using Python Pillow
[英]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.