python画图-将多张图片放在一张图上展示
图示效果:
代码如下:
from PIL import Image
import matplotlib.pyplot as plt
import numpy as np
class JointPlt:
def Picture_Synthesis(self,mother_img,son_img,save_img,coordinate=None):
'''
:param mother_img: 母图
:param son_img: 子图
:param save_img: 保存图片名
:param coordinate: 子图在母图的坐标
:return:
'''
#将图片赋值,方便后面的代码调用
M_Img = Image.open(mother_img)
S_Img = Image.open(son_img)
factor = 1#子图缩小的倍数1代表不变,2就代表原来的一半
#给图片指定色彩显示格式
M_Img = M_Img.convert("RGBA") # CMYK/RGBA 转换颜色格式(CMYK用于打印机的色彩,RGBA用于显示器的色彩)
# 获取图片的尺寸
M_Img_w, M_Img_h = M_Img.size # 获取被放图片的大小(母图)
print("母图尺寸:",M_Img.size)
S_Img_w, S_Img_h = S_Img.size # 获取小图的大小(子图)
print("子图尺寸:",S_Img.size)
size_w = int(S_Img_w / factor)
size_h = int(S_Img_h / factor)
# 防止子图尺寸大于母图
if S_Img_w > size_w:
S_Img_w = size_w
if S_Img_h > size_h:
S_Img_h = size_h
# # 重新设置子图的尺寸
# icon = S_Img.resize((S_Img_w, S_Img_h), Image.ANTIALIAS)
icon = S_Img.resize((S_Img_w, S_Img_h), Image.ANTIALIAS)
w = int((M_Img_w) / 2.0) #- S_Img_w
h = int((M_Img_h ) / 2.0)#- S_Img_h
try:
if coordinate==None or coordinate=="":
coordinate=(w, h)
# 粘贴子图到母图的指定坐标(当前居中)
M_Img.paste(icon, coordinate, mask=None)
else:
print("已经指定坐标")
# 粘贴子图到母图的指定坐标(当前居中)
M_Img.paste(icon, coordinate, mask=None)
except:
print("坐标指定出错 ")
# 保存图片
M_Img.save(save_img)
if __name__ == '__main__':
x = np.linspace(-5, 5, 50)
y = x * x
figure, axes = plt.subplots(1, 1, figsize=(12, 10),dpi=100)
# 3.2 绘制初始图形
axes.plot(x, y, color='white', linestyle='--')
# 3.3 不显示边框,此时只会取消边框,不会取消坐标轴标签
[axes.spines[loc_axis].set_visible(False) for loc_axis in ['top', 'right', 'bottom', 'left']]
# 3.4 不显示坐标轴标签
axes.set_xticks([]) # 设置方法1
axes.get_yaxis().set_visible(False) # 设置方法2
figSaveDir = r"F:/"
figure.savefig(figSaveDir+"55.png")
jointplt=JointPlt()
jointplt.Picture_Synthesis(figSaveDir + "55.png", figSaveDir + "99.png", figSaveDir + "55.png", (0, 0))
jointplt.Picture_Synthesis(figSaveDir + "55.png", figSaveDir + "99.png", figSaveDir + "55.png", (380, 0))
jointplt.Picture_Synthesis(figSaveDir + "55.png", figSaveDir + "99.png", figSaveDir + "55.png", (0, 370))
jointplt.Picture_Synthesis(figSaveDir + "55.png", figSaveDir + "99.png", figSaveDir + "55.png", (380, 370))
注意上述代码中,组装好的图片是直接保存在相应的位置,代码中是保存在"F:/55.png",被组装图片在F:/99.png,代码中只示例了一张图,如需多张不同图,只需将对应的图片文件修改即可.
上述代码中99.png如下图:
四次组装后如下图所示: