Python Matplotlib 中绘制指定像素大小的图像
flyfish
像素尺寸 = 英寸尺寸 × dpi
Matplotlib 的figsize参数以英寸为单位,dpi(dots per inch)表示每英寸的像素数。
目标像素宽度 = 英寸宽度 × dpi
目标像素高度 = 英寸高度 × dpi
反过来,若要指定像素尺寸(如 800×600),需先计算对应的英寸尺寸:
英寸宽度 = 目标像素宽度 / dpi
英寸高度 = 目标像素高度 / dpi
示例
展示如何创建并保存800×600 像素的图像
importmatplotlib.pyplotaspltfromPILimportImage# 用于验证保存的图像像素尺寸# --------------------------# 1. 定义目标像素尺寸和dpi# --------------------------target_width_px=800# 目标宽度(像素)target_height_px=600# 目标高度(像素)dpi=100# 每英寸像素数(可调整,如72/96/150/300)# --------------------------# 2. 计算figsize(英寸)# --------------------------figsize=(target_width_px/dpi,# 英寸宽度target_height_px/dpi# 英寸高度)# --------------------------# 3. 创建画布并绘制内容# --------------------------# 创建figure,指定尺寸和dpi(关键!)fig,ax=plt.subplots(figsize=figsize,dpi=dpi)# 绘制示例内容(折线图)ax.plot([1,2,3,4],[1,4,2,3],linewidth=2)ax.set_title('800×600',fontsize=12)ax.set_xlabel('X轴',fontsize=10)ax.set_ylabel('Y轴',fontsize=10)# 可选:调整子图间距(避免空白裁剪影响像素精度)plt.subplots_adjust(left=0.1,right=0.9,top=0.9,bottom=0.1)# --------------------------# 4. 保存图像(确保像素准确)# --------------------------# 保存时指定相同的dpi,避免缩放;bbox_inches='tight'会裁剪空白,如需严格像素请去掉plt.savefig('output_800x600.png',dpi=dpi,# 与画布dpi一致bbox_inches=None# 不裁剪空白(保证像素精确))# 显示图像(窗口大小受系统影响,但保存的像素是准确的)plt.show()# --------------------------# 5. 验证保存的图像像素尺寸# --------------------------img=Image.open('output_800x600.png')actual_width,actual_height=img.sizeprint(f"实际保存的像素尺寸:{actual_width}×{actual_height}")# 输出:800×600dpi的常见取值:
屏幕显示:72/96/100 dpi
打印/高清:150/300 dpi