50 lines
1.3 KiB
Python
50 lines
1.3 KiB
Python
# -*- coding:utf-8 -*-
|
||
# @Author len
|
||
# @Create 2023/12/31 16:44
|
||
|
||
import matplotlib.pyplot as plt
|
||
import numpy as np
|
||
|
||
def draw_heart(color='red', save_path='heart.png'):
|
||
"""
|
||
绘制一个爱心并保存为PNG文件。
|
||
|
||
参数:
|
||
color (str): 爱心的颜色,默认为红色。
|
||
save_path (str): 图像保存的路径。
|
||
"""
|
||
# 创建一个新的图形和轴,设置背景为透明
|
||
fig, ax = plt.subplots(figsize=(6, 5), dpi=100)
|
||
fig.patch.set_alpha(0.0)
|
||
|
||
# 定义心形曲线的参数方程
|
||
t = np.linspace(0, 2 * np.pi, 500) # 减少采样点数量以提高性能
|
||
x = 16 * np.sin(t)**3
|
||
y = 13 * np.cos(t) - 5 * np.cos(2*t) - 2 * np.cos(3*t) - np.cos(4*t)
|
||
|
||
# 缩放和平移心形曲线以适应绘图区域
|
||
x = 0.5 * x / 16 + 0.5
|
||
y = -0.5 * y / 13 + 0.75
|
||
|
||
# 绘制心形,颜色为指定颜色
|
||
ax.fill(x, y, color=color)
|
||
|
||
# 设置坐标轴的范围
|
||
ax.set_xlim(0, 1)
|
||
ax.set_ylim(0, 1)
|
||
|
||
# 移除坐标轴
|
||
ax.axis('off')
|
||
|
||
# 保存图像为PNG格式,背景设为透明
|
||
plt.savefig(save_path, transparent=True, bbox_inches='tight', pad_inches=0)
|
||
|
||
# 关闭图形,避免显示
|
||
plt.close()
|
||
|
||
# 调用函数绘制红色爱心,并指定保存路径
|
||
draw_heart(color='red', save_path='optimized_heart.png')
|
||
|
||
|
||
|