fredtux/photo-color-names

图像颜色提取和命名的异构库集成器

1.0.0 2017-07-10 22:02 UTC

This package is auto-updated.

Last update: 2024-09-27 05:40:28 UTC


README

图像颜色提取和命名的异构库集成器

使用方法

带注释的简单示例

<?php
### OPTIONAL (depending on settings) ###
// Include autoload - may not be necessary if it has already been done
include __DIR__ . '/vendor/autoload.php';

// Used classes
/// For color extraction
use PhotoColorNames\PhotoColors\PhotoColorFactory;
use PhotoColorNames\PhotoColors\PhotoColorOptions;
/// For color naming
use PhotoColorNames\ColorNames\ColorNamesFactory;
use PhotoColorNames\ColorNames\NamePool;
use PhotoColorNames\NameColor;
### END OF OPTIONAL ###

### MAIN ###
// Extract colors
/// Use the factory to retrieve a new object for color extraction
$photoColors = PhotoColorFactory::getColorExtractor('ColorThief'); // Has to be installed via composer - 'GetMostCommonColors' can be used instead
/// Specify options - the most important is the file path
$photoColorOptions = new PhotoColorNames\PhotoColors\PhotoColorExtractorOptions(__DIR__ . '/test/images/test.jpg'); // Assuming there is a test image at this path
// Manually set each option, or set all options except the file path to their default value
$photoColorOptions->setDefaultOptions();

// Name the colors
/// Use the factory to retrieve a new object for color naming
$nameGiver = ColorNamesFactory::getColorNameGiver('ntc');
/// Use a list of names
$nameList = NamePool::getNtcNames();

// Construct object using the 4 variables declared before
$nameColor = new NameColor($photoColors, $photoColorOptions, $nameGiver, $nameList);

// Use the newly created object to get the names of the most frequently used colors in the file
$x = $nameColor->getNamesOfFrequentlyUsedColors();
### END OF MAIN ###

// Print result (not part of MAIN because it's not necessary)
print_r($x);

添加新库

通过源代码

Composer

只需将其添加到 composer.json 并安装。Composer 会轻松将其集成到项目中。

Packagist 项目

非 Composer

建议,但不强制,将新库放置在 NoComposer 文件夹中,该文件夹位于 ColorNamesPhotoColors 文件夹下,具体取决于新库的用途。

通过类型

颜色提取器

  1. 必须在 src/PhotoColors/Adapters 中创建适配器
  2. 适配器必须实现 iPhotoColorExtractor
    • 有一个名为 getColors 的函数
    • 有 1 个参数
      • $photoColorExtractorOptions 类型为 PhotoColorExtractorOptions
    • 实现所有必要的逻辑以产生与第 5 个示例相同的类型的结果(由于设计用于在 PHP >= 5.6 上运行,因此不强制返回类型)
  3. 必须在 PhotoColorFactorygetColorExtractor 方法的 switch 语句的新情况下放置适配器类型的对象构造操作
  4. 可以通过从工厂创建对象来使用新库
    PhotoColorFactory::getColorExtractor('ColorExtractorLibrary');
  5. 示例
    • PhotoColorNames\PhotoColors\Adapters\ColorThiefAdapter
    • GetMostCommonColorsAdapter

提取器选项

可以指定新的提取器选项类,但必须与颜色提取器类 1 配对

颜色名称

  1. 必须在 src/ColorNames/Adapters 中创建适配器
  2. 适配器必须实现 iPhotoColorNamesGiver
    • 有一个名为 getName 的函数
    • 有 2 个参数
      • $colorName 类型为 ColorData
      • $nameList 类型为 array
    • 实现所有必要的逻辑以产生与第 5 个示例相同的类型的结果(由于设计用于在 PHP >= 5.6 上运行,因此不强制返回类型)
  3. 必须在 ColorNamesFactorygetColorNameGiver 方法的 switch 语句的新情况下放置适配器类型的对象构造操作
  4. 可以通过从工厂创建对象来使用新库
    ColorNamesFactory::getColorNameGiver('ColorNamingLibrary');
  5. 示例
    • PhotoColorNames\ColorNames\Adapters\NtcAdapter
名称列表

建议,但不强制,将新的名称列表添加到 NamePool,作为返回具有颜色 RGB 十六进制代码作为键的数组的静态方法

许可证

此项目根据 MIT 许可证发布。
在此项目中,有来自各种来源的算法。我将尽最大努力尊重代码许可证并向所有者致谢,但如果您认为您的许可证已被违反,请随时创建问题,我会尽快解决。