在numpy/scipy中,我将图像存储在数组中。我可以显示它,我想保存它使用savefig没有任何边框,轴,标签,标题,.只是纯粹的形象,没有别的。
我想避免像PyPNG或scipy.misc.imsave这样的软件包,它们有时是有问题的(它们并不总是安装得很好,只对我来说是基本的savefig() )
发布于 2011-11-21 21:38:21
编辑
将aspect='normal更改为aspect='auto',因为这在matplotlib的最新版本中发生了变化(多亏了@Luke19 19)。
假设:
import matplotlib.pyplot as plt在没有框架的情况下制作一个图形:
fig = plt.figure(frameon=False)
fig.set_size_inches(w,h)使内容填充整个数字
ax = plt.Axes(fig, [0., 0., 1., 1.])
ax.set_axis_off()
fig.add_axes(ax)然后在上面画你的图像:
ax.imshow(your_image, aspect='auto')
fig.savefig(fname, dpi)aspect参数更改像素大小,以确保它们填充fig.set_size_inches(…)中指定的图形大小。要了解如何处理这类事情,请阅读matplotlib文档,特别是关于轴、轴和艺术家的主题。
发布于 2012-12-04 16:51:23
一个更容易的解决办法似乎是:
fig.savefig('out.png', bbox_inches='tight', pad_inches=0)发布于 2011-11-21 22:06:00
您可以在轴内找到图像的bbox (使用get_window_extent),并使用bbox_inches参数只保存图像的这一部分:
import numpy as np
import matplotlib.pyplot as plt
data=np.arange(9).reshape((3,3))
fig=plt.figure()
ax=fig.add_subplot(1,1,1)
plt.axis('off')
plt.imshow(data)
extent = ax.get_window_extent().transformed(fig.dpi_scale_trans.inverted())
plt.savefig('/tmp/test.png', bbox_inches=extent)我从乔·金顿( Joe 这里 )那里学到了这个技巧。
https://stackoverflow.com/questions/8218608
复制相似问题