Python实现单画布无缩放显示多张图片并添加标题保存为PNG
没问题!你已经摸到正确的路子了——用Matplotlib的subplots确实是实现多图同画布展示的最优解之一。我把你的代码补全优化,再加上关键细节说明,这样你就能轻松实现需求啦:
实现4张图片的布局展示与保存
首先,确保你已经导入了必要的依赖库:
import matplotlib.pyplot as plt import numpy as np
完整代码实现
# 假设你的4张图片数组为img1、img2、img3、img4(均为224x224x3的NumPy数组) # 创建2行2列的子图布局,同时指定画布大小避免拥挤 fig, axs = plt.subplots(2, 2, figsize=(10, 10)) # 把图片和对应标题打包成列表,用循环替代重复代码,更简洁易维护 image_list = [img1, img2, img3, img4] title_list = ['original', 'blur + noise', 'restored a', 'restored b'] # 遍历子图、图片和标题,批量设置展示参数 for ax, img, title in zip(axs.flat, image_list, title_list): ax.imshow(img) ax.axis('off') # 关闭坐标轴,让图片展示更清爽 ax.set_title(title, fontsize=12) # 设置标题字体大小,避免过小看不清 # 自动调整子图间距,防止标题与图片、子图之间互相遮挡 plt.tight_layout() # 保存整个画布为PNG格式,dpi设为300保证高清 plt.savefig('image_grid.png', dpi=300, bbox_inches='tight') plt.close() # 关闭画布释放内存资源
关键细节说明
- 用
axs.flat将2x2的子图数组展开成一维迭代器,不用手动逐个写axs[0,0]、axs[1,0]这类索引,代码更简洁。 figsize=(10,10)可以根据你的需求调整,数值越大画布越宽高,图片展示空间也更大。tight_layout()和保存时的bbox_inches='tight'是避免元素遮挡的关键,前者调整子图间距,后者裁剪保存时的多余空白。- 设置
dpi=300能让输出的PNG图片拥有高清分辨率,适合后续的文档插入或展示使用。
内容的提问来源于stack exchange,提问作者Maximal
相关产品推荐
相关产品推荐

