📜  散景 – 多幅图(1)

📅  最后修改于: 2023-12-03 15:39:56.596000             🧑  作者: Mango

散景 – 多幅图

散景是一款开源的图片处理库,它可以根据输入的一组图片生成一张散景图。散景图是由多张重叠的图片组成,每张图片的位置和大小都是随机的。散景图可以用于艺术创作、演示文稿等场景中。

特性
  • 支持生成包含多张图片的散景图。
  • 可以指定输入的图片大小和输出的散景图大小。
  • 提供多种排列策略,如随机排列、圆形排列、网格排列等。
  • 可以自定义每张图片的旋转角度、透明度、颜色滤镜等效果。
  • 支持输出为 PNG、JPEG 等常见图片格式。
快速入门
安装

散景库可以通过 pip 来安装:

pip install scatter-image
示例
from scatter_image import scatter

# 输入的图片
images = ['image1.jpg', 'image2.png', 'image3.bmp']

# 散景图的大小
output_size = (800, 800)

# 图片排列策略
arrangement = 'random'

# 散景图的参数
params = {
    'rotation_range': (0, 360),
    'opacity_range': (0.5, 1),
    'color_filter': (1, 1, 1),
}

# 生成散景图
scatter(images, output_size, arrangement, params)

以上代码将会生成一个大小为 800x800 像素的散景图,其中包含三张输入的图片,这些图片被随机排列,并且旋转角度在 [0, 360] 度之间、透明度在 [0.5, 1] 之间、颜色滤镜为白色。散景图将会被保存为 scatter_image.png 文件。

语法

散景库提供了一个 scatter() 函数来生成散景图。它具有以下语法:

scatter(images, output_size, arrangement, params, output_file=None, output_format=None)
参数

images:要合成为散景图的图片文件名列表或者 numpy 数组列表。

output_size:生成的散景图的大小,以像素为单位。它是一个二元组,例如 (800, 600),其中第一个元素是宽度,第二个元素是高度。

arrangement:图片排列策略。可以是 'random''circle''grid',分别表示随机排列、圆形排列和网格排列。

params:生成散景图的参数。它是一个字典,包含以下键:

  • rotation_range:对于每张图片,旋转角度的范围。它是一个二元组 (min, max),表示旋转角度在 min 度到 max 度之间。
  • opacity_range:对于每张图片,透明度的范围。它是一个二元组 (min, max),表示透明度在 minmax 之间。
  • color_filter:对于每张图片,颜色滤镜。它是一个三元组 (r, g, b),表示颜色滤镜的 RGB 值。每个值的范围是 [0, 1]。

output_file:生成的散景图文件名。默认为 scatter_image.png

output_format:生成的散景图的文件格式。默认自动检测,可以是 'png''jpeg' 等。如果文件名后缀不支持,则需要指定此参数。

返回值

函数将返回生成的散景图的 numpy 数组。如果指定了 output_file,则自动保存图片到文件中。

排列策略

散景库提供了多种排列策略来定位每张输入图片的位置和大小。你可以在调用 scatter() 函数时指定它们。

随机排列

随机排列是默认的排列策略。

scatter(images, output_size, 'random', params)

在随机排列中,每张图片被随机赋予位置、大小和旋转角度。

圆形排列

圆形排列将输入图片排列在一个圆形中。

scatter(images, output_size, 'circle', params)

在圆形排列中,每张图片的位置使得它们刚好均匀分布在圆形上,图片大小和旋转角度随机。

网格排列

网格排列将输入图片排列在一个网格中。

scatter(images, output_size, 'grid', params)

在网格排列中,每张图片被放置在一个网格单元中。每个单元里只能放置一张图片。网格的大小和图片的数量是根据输出的散景图大小和输入的图片数量计算出来的。图片大小和旋转角度随机。