首页 > 解决方案 > 如何在 Python 中沿圆形路径粘贴图像?

问题描述

介绍

我正在尝试用 Python 重新创建 Twitter 交互圈。但是,我被困在图像的创建上。

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

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

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

示例图像

在此处输入图像描述

我已经能够使用枕头实现:

在此处输入图像描述

标签: pythonpython-3.ximage-processingpython-imaging-library

解决方案


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

如果你有半径的圆R,你必须放入角度angle

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

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

您必须记住 Python 使用radians而不是degreesin math.sin()math.cos()因此您需要math.sin(math.radians(180))计算 for 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 

推荐阅读