brianmcdo/image-palette

从图片中提取颜色并生成与颜色白名单相匹配的颜色调色板。

v2.0.1 2015-10-25 01:38 UTC

This package is auto-updated.

Last update: 2024-08-26 04:11:36 UTC


README

Build Status Total Downloads Latest Stable Version Scrutinizer Code Quality

ImagePalette 用于从指定的图片中提取颜色调色板。除了是原生 PHP 实现,ImagePalette 与许多调色板提取器不同,因为它基于白名单调色板。下面是默认调色板

从颜色调色板工作的主要优势是更接近匹配,因为每个像素只需在调色板中计算颜色距离并选择最佳匹配。这对于与颜色分类法一起使用很有用,因为分类法应该有有限数量的颜色。

在此处查看该功能的示例: http://alpha.wallhaven.cc/wallpaper/21852

要求

PHP >= 5.4 php5-gd

安装

只需将以下内容添加到您的 composer.json 文件中

"require": {
    "brianmcdo/image-palette": "dev-master"
}

用法

// initiate with image
$palette = new \BrianMcdo\ImagePalette\ImagePalette( 'https://www.google.co.uk/images/srpr/logo3w.png' );

// get the prominent colors
$colors = $palette->colors; // array of Color objects

// to string as json
echo $palette; // '["#ffffdd", ... ]'

// implements IteratorAggregate
foreach ($palette as $color) {
  // Color provides several getters/properties
  echo $color;             // '#ffffdd'
  echo $color->rgbString;  // 'rgb(255,255,221)'
  echo $color->rgbaString; // 'rgba(255,255,221,0.25)'
  echo $color->int;        // 0xffffdd
  echo $color->rgb;        // array(255,255,221)
  echo $color->rgba;       // array(255,255,221,0.25)
  // ...
}

就这样!

Laravel 4

app/config/app.php 中找到 providers 键并注册 ImagePaletteServiceProvider

'providers' => array(
    // ...
    'BrianMcdo\ImagePalette\Laravel\ImagePaletteServiceProvider',
)

然后,在 app/config/app.php 中找到 aliases 键并注册 ImagePaletteFacade

'aliases' => array(
    // ...
    'ImagePalette' => 'BrianMcdo\ImagePalette\Laravel\ImagePaletteFacade',
)

示例

$fileOrUrl = 'https://www.google.com/images/srpr/logo11w.png';

ImagePalette::getColors($fileOrUrl);

选项

精度

默认情况下,ImagePalette 将处理每 10 个像素。这是出于性能考虑,您可以像下面这样更改它。精度是性能与时间之间的权衡。

$palette = new \BrianMcdo\ImagePalette\ImagePalette( $src, 5 /* precision */ );

颜色数量

要控制返回的颜色数量,请设置第三个参数。您还可以向获取器提供自定义长度。

$palette = new \BrianMcdo\ImagePalette\ImagePalette( $src, 5, 3 /* number of colors to return */ );
$colors = $palette->getColors(7 /* number of colors to return */);

贡献指南

请参阅: https://github.com/brianmcdo/ImagePalette/blob/master/CONTRIBUTING.md