正如标题所述,我正在尝试将一个fig
转换为PIL.Image
。目前,我能够通过先将fig
保存到磁盘,然后使用Image.open()
打开该文件来完成此操作,但是这个过程比预期的时间长,我希望通过跳过本地保存步骤来加快速度。
以下是我的进展:
# build fig
figsize, dpi = self._calc_fig_size_res(img_height)
fig = plt.Figure(figsize=figsize)
canvas = FigureCanvas(fig)
ax = fig.add_subplot(111)
ax.imshow(torch.from_numpy(S).flip(0), cmap = cmap)
fig.subplots_adjust(left = 0, right = 1, bottom = 0, top = 1)
ax.axis('tight'); ax.axis('off')
# export
fig.savefig(export_path, dpi = dpi)
# open image as PIL object
img = Image.open(export_path)
我尝试在构建 fig 后执行此操作(它将在导出阶段之前执行):
pil_img = Image.frombytes('RGB', canvas.get_width_height(), canvas.tostring_rgb())
但它没有显示整张图片。看起来像是左上角的裁剪图,但也可能是数据的奇怪表现方式 - 我正在处理频谱图,所以这些图像相当抽象。