You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用matplotlib绘制具有径向对称性的圆形图像

对称圆形图像Python实现方案

可以通过Pillow + numpy组合实现,核心思路是先生成四分之一区域的基础图案,再通过对称翻转拼接得到完整对称效果,最后叠加圆形蒙版裁剪即可,整体代码非常简洁。

依赖安装

先安装需要的第三方库:

pip install pillow numpy

完整实现代码

from PIL import Image, ImageDraw
import numpy as np

# 基础参数配置
circle_radius = 300
canvas_size = circle_radius * 2

# 1. 生成第一象限四分之一区域的基础图案
quarter_size = circle_radius
quarter_canvas = Image.new("RGBA", (quarter_size, quarter_size), (255,255,255,0))
draw = ImageDraw.Draw(quarter_canvas)

# 这里可自定义替换为你需要的基础图案,示例为随机生成色块
for _ in range(8):
    point1 = np.random.randint(0, quarter_size, 2)
    point2 = np.random.randint(point1, quarter_size, 2)
    random_color = tuple(np.random.randint(0, 256, 3)) + (255,)
    draw.ellipse([*point1, *point2], fill=random_color)

# 2. 对称翻转拼接为完整正方形图案
quarter_arr = np.array(quarter_canvas)
# 水平翻转得到第二象限
second_quadrant_arr = np.fliplr(quarter_arr)
# 拼接得到上半部分两个象限的内容
top_half_arr = np.hstack([second_quadrant_arr, quarter_arr])
# 垂直翻转上半部分得到下半部分两个象限的内容
bottom_half_arr = np.flipud(top_half_arr)
# 拼接得到完整正方形图案
full_canvas_arr = np.vstack([top_half_arr, bottom_half_arr])

# 3. 叠加圆形蒙版裁剪为圆形
full_img = Image.fromarray(full_canvas_arr)
circle_mask = Image.new("L", (canvas_size, canvas_size), 0)
mask_draw = ImageDraw.Draw(circle_mask)
mask_draw.ellipse((0, 0, canvas_size, canvas_size), fill=255)
full_img.putalpha(circle_mask)

# 结果输出
full_img.save("symmetric_circle.png")
full_img.show()

自定义调整说明

  • 若需要其他对称规则,修改翻转拼接逻辑即可:比如要中心对称,仅需将四分之一图案旋转180度拼接即可,不需要两次翻转
  • 四分之一区域的基础图案可以替换为任意自定义内容,包括线条、渐变、文字、导入的外部图片裁切结果等
  • 不需要透明背景的话,把所有RGBA模式改为RGB,删除alpha通道相关的蒙版设置即可

内容的提问来源于stack exchange,提问作者haben

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 04:18:02