擅长:python、mysql、java
<p>基于tiago接受的响应,这里有一个小的通用函数,它将numpy数组导出到与数组具有相同分辨率的图像:</p>
<pre><code>import matplotlib.pyplot as plt
import numpy as np
def export_figure_matplotlib(arr, f_name, dpi=200, resize_fact=1, plt_show=False):
"""
Export array as figure in original resolution
:param arr: array of image to save in original resolution
:param f_name: name of file where to save figure
:param resize_fact: resize facter wrt shape of arr, in (0, np.infty)
:param dpi: dpi of your screen
:param plt_show: show plot or not
"""
fig = plt.figure(frameon=False)
fig.set_size_inches(arr.shape[1]/dpi, arr.shape[0]/dpi)
ax = plt.Axes(fig, [0., 0., 1., 1.])
ax.set_axis_off()
fig.add_axes(ax)
ax.imshow(arr)
plt.savefig(f_name, dpi=(dpi * resize_fact))
if plt_show:
plt.show()
else:
plt.close()
</code></pre>
<p>正如tiago在之前的回复中所说,首先需要找到屏幕DPI,可以在这里完成,例如:<a href="http://dpi.lv" rel="noreferrer">http://dpi.lv</a></p>
<p>例如,我在函数中添加了一个附加参数<code>resize_fact</code>,您可以将图像导出到原始分辨率的50%(0.5)。</p>