manticorp/image-palette

从图片中提取颜色并生成与颜色白名单对应的调色板。

v2.1.0 2017-02-01 09:23 UTC

This package is not auto-updated.

Last update: 2024-09-15 03:18:56 UTC


README

Build Status Total Downloads Latest Stable Version Scrutinizer Code Quality

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

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

在此处查看此操作的示例:[http://alpha.wallhaven.cc/wallpaper/21852](http://alpha.wallhaven.cc/wallpaper/21852)

要求

PHP >= 5.4 php5-gd

安装

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

"require": {
    "manticorp/image-palette": "^2.1"
}

用法

// 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 */ );

颜色数量

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

$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