python绘制月亮

发布于:2024-09-18 ⋅ 阅读:(12) ⋅ 点赞:(0)

在这里插入图片描述

import matplotlib
import matplotlib.pyplot as plt
import moviepy.editor as mpy

matplotlib.rcParams['font.family'] = 'SimHei'


# 坐标列表
positions = [
    (0, 0), (1 / 4, 1 / 4), (1 / 3, 1 / 4), (1 / 2, 1 / 4), (2 / 3, 1 / 4),
    (3 / 4, 1 / 4), (1, 1 / 4), (5 / 4, 1 / 4), (4 / 3, 1 / 4), (3 / 2, 1 / 4), (2, 0)
]

# 设置圆的半径
radius = 1

# 要添加的文本
text = "人有悲欢离合\n月有阴晴圆缺\n此事古难全\n但愿人长久\n千里共婵娟"

# 生成每一帧并保存为图像
for index, position in enumerate(positions):
    fig, ax = plt.subplots()

    # 画第二个圆(中心在(2, 0))
    circle2 = plt.Circle((2 * radius, 0), radius, color='#E1E19A', fill=True)
    ax.add_artist(circle2)

    # 画第一个圆(根据位置变化)
    circle1 = plt.Circle(position, radius, color='white', fill=True)
    ax.add_artist(circle1)

    # 设置图形的范围
    ax.set_xlim(-1, 3)
    ax.set_ylim(-1, 1)
    ax.set_aspect('equal')  # 保持圆形比例
    ax.axis('off')  # 隐藏坐标轴

    # 添加文本
    ax.text(-0.8, 0.5, text, fontsize=12, ha='left', va='center', color='black', wrap=True)

    # 保存当前帧为 PNG 文件
    plt.savefig(f'frame_{index:03d}.png', bbox_inches='tight', pad_inches=0)
    plt.close(fig)  # 关闭图形以释放内存

# 将生成的帧制作成视频
clips = []
for i in range(len(positions)):
    clip = mpy.ImageClip(f'frame_{i:03d}.png').set_duration(0.1)  # 每帧持续0.1秒
    clips.append(clip)

# 合并所有帧
video = mpy.concatenate_videoclips(clips, method='compose')
video.write_gif("circle_animation1.gif", fps=10)
video.write_videofile("circle_animation_with_text1.mp4", fps=10)  # 保存为 MP4 文件

网站公告

今日签到

点亮在社区的每一天
去签到