skyree/php-colorpicker

从图像中选择一组主要颜色

v1.0.0 2019-04-19 07:57 UTC

This package is auto-updated.

Last update: 2024-09-19 20:50:25 UTC


README

从图像中选择一组主要颜色

要求

  • php 7.1
  • ext-imagick

安装

克隆或下载仓库,然后运行 composer install

演示

为了使用演示,运行以下命令

cd demo
php -S localhost:8000

并在浏览器中打开 localhost:8000 的 URL

入门

在文件中使用 Lol\ColorPicker\ColorPicker

用法示例

$imageUrl = 'http://some.website/some/image.ext';
$colorPicker = new ColorPicker();
$palette = $colorPicker->pick($imageUrl, ColorPicker::KMEANS, 7, 150);
foreach ($palette as $cluster) {
    echo sprintf("#%02x%02x%02x", ...$cluster['color']) . PHP_EOL; // will print up to 5 hex codes
}

选项

ColorPicker::pick($imageUrl, $algorithm, $paletteSize, $resize);

  • $imageUrl 是您想要从中选择颜色的图像的 URL
  • $algorithm 是要在 ColorPicker::KMEANSColorPicker::WEIGHTED_KMEANSColorPicker::LOCAL_MAXIMA 中使用的算法
  • $paletteSize 是您想要选择的主要颜色的最大数量
  • $resize 是图像应该调整大小的宽度,可以留空
  • $quantization 是一个数组,提供量化的颜色空间和颜色数量,格式如下
$quantization = [
    'colorNumber' => 64,
    'colorSpace' => 1 // RGB space
];

算法

  • ColorPicker::KMEANS 使用标准的无监督 Kmeans 或 Kmeans++ 算法来计算 k 个聚类,一些聚类最终可能是空的
  • ColorPicker::WEIGHTED_KMEANS 根据 coordinate 和 weight 计算聚类中心,这是从直方图实现的 Kmeans
  • ColorPicker::LOCAL_MAXIMA 在量化 rgb 值的 3d 空间中保留其 27 个相邻单元格中的最大值。与量化参数不兼容!
  • ColorPicker::QUANTIZATION 只对颜色进行量化并返回最高的聚类