pyrsmk/metrogen

Metro风格相册生成器

2.0.0 2017-01-25 13:58 UTC

This package is auto-updated.

Last update: 2024-08-29 04:09:11 UTC


README

Metrogen是一个小型库,旨在自动创建适用于metro风格相册(如Windows 8中所示)的元数据,以便集成。相册中每个位置的方位/尺寸都是随机的。

此库是Myriade 2项目的一部分(链接即将推出)。

安装

composer require pyrsmk/metrogen

使用

构造函数为生成相册提供了几个选项

  • block : 块大小(以像素为单位)(默认:200
  • columns : 工作区的列数(此选项是必需的)
  • rows : 工作区的行数(此选项是必需的)
  • shapes : 允许的不同形状的列表(默认:['1x1', '1x2', '2x1', '2x2']
  • margin : 在每个元素周围添加的边距(默认:0

要创建metro相册,我们将所有工作区划分为块(具有固定像素大小),然后根据允许的形状生成形状以添加到相册中。工作区的大小根据块大小固定为列数和行数。

以下是一个快速示例,其中工作区为1600x1000,其他有趣的形状和边距

$metrogen = new Metrogen\Metadata([
    'columns' => 8,
    'rows' => 5,
    'shapes' => ['1x1', '1x3', '3x1', '2x2', '3x2'],
    'margin' => 5
]);

$metadata = $metrogen->generate();

var_dump($metadata);

它将打印

array(13) {
  [0] => array(4) {
    ["x"] => int(0)
    ["y"] => int(0)
    ["width"] => int(200)
    ["height"] => int(600)
  }
  [1] => array(4) {
    ["x"] => int(200)
    ["y"] => int(0)
    ["width"] => int(400)
    ["height"] => int(400)
  }
  [2] => array(4) {
    ["x"] => int(600)
    ["y"] => int(0)
    ["width"] => int(600)
    ["height"] => int(400)
  }
  [3] => array(4) {
    ["x"] => int(1200)
    ["y"] => int(0)
    ["width"] => int(400)
    ["height"] => int(400)
  }
  [4] => array(4) {
    ["x"] => int(200)
    ["y"] => int(400)
    ["width"] => int(600)
    ["height"] => int(200)
  }
  [5] => array(4) {
    ["x"] => int(800)
    ["y"] => int(400)
    ["width"] => int(400)
    ["height"] => int(400)
  }
  [6] => array(4) {
    ["x"] => int(1200)
    ["y"] => int(400)
    ["width"] => int(400)
    ["height"] => int(400)
  }
  [7] => array(4) {
    ["x"] => int(0)
    ["y"] => int(600)
    ["width"] => int(600)
    ["height"] => int(200)
  }
  [8] => array(4) {
    ["x"] => int(600)
    ["y"] => int(600)
    ["width"] => int(200)
    ["height"] => int(200)
  }
  [9] => array(4) {
    ["x"] => int(0)
    ["y"] => int(800)
    ["width"] => int(600)
    ["height"] => int(200)
  }
  [10] => array(4) {
    ["x"] => int(600)
    ["y"] => int(800)
    ["width"] => int(600)
    ["height"] => int(200)
  }
  [11] => array(4) {
    ["x"] => int(1200)
    ["y"] => int(800)
    ["width"] => int(200)
    ["height"] => int(200)
  }
  [12] => array(4) {
    ["x"] => int(1400)
    ["y"] => int(800)
    ["width"] => int(200)
    ["height"] => int(200)
  }
}

许可证

MIT.