如何在 Python 中沿圆形路径粘贴图像?

How to paste images along a circular path in Python?

简介

我正在尝试在 Python 中重新创建 Twitter 互动圈。但是,我卡在了图像的创建上。

到目前为止,我已经能够裁剪方形头像并将它们放置在使用 Pillow 创建的空白图像的中心。

如何将这些图像围绕中心图像以圆形方式放置?

如有任何帮助,我将不胜感激。我是图像处理的初学者。

示例图片

我使用 Pillow 能够实现的目标:

计算位置需要相当基础的数学(圆的数学公式)。

如果你有一个半径为 R 的圆,你必须输入角度 angle

  x = R * cos(angle) + center_x
  y = R * sin(angle) + center_y 

Top 有角度 0bottom 有角度 180left/right 有角度 90/ 270(或270/90)。

你必须记住 Python 在 math.sin() 中使用 radians 而不是 degreesmath.cos() 所以你需要 math.sin(math.radians(180)) 来计算180 degrees.

如果你想把 8 图像放在圆上,那么你需要角度 360 / 8,它给出 45 所以第一张图像可以在角度 45 * 1 上,第二张图像可以在 45 * 2,等等

如果你想偏移 5 度然后 (45 * 1) + 5,第二个 (45 * 2) + 5,等等


我不确定图片的大小。圆有电路

 circuit = 2 * PI * R

所以对于 8 图片,每个图片都应该使用 diagonal 小于

的圆圈
 diagonal = circuit / 8 

给出半径

 radius = diagonal / 2

要创建此圈子,您需要带有

的图像
 width  = diagonal
 height = diagonal

如果电路上有 8 张图像,则图像之间有 7 个间隙。

如果您想要大小为 5 像素的间隙,那么您可能需要

 gap = 5

 diagonal = (circuit - 7*gap) / 8