ckdot/product-image-color-extractor

ckdot/product-image-color-extractor 是一个用于从产品图像中提取颜色的 PHP 库,类似于在电子商务中常见的图像。

1.0.1 2017-09-21 14:44 UTC

This package is not auto-updated.

Last update: 2024-09-29 04:20:17 UTC


README

kilb/product-image-color-extractor 是一个用于从产品图像中提取颜色的 PHP 库,类似于在电子商务中常见的图像。

安装

需要 ImageMagick 和 PHP Imagick 模块。

composer require ckdot/product-image-color-extractor

关于

我实现了这个软件来找出从几个 API 导入的产品图像中的颜色。我只有两个要求:

  1. 结果(颜色)应该非常准确

  2. 执行应该很快 - 因此在几分钟内必须处理成千上万的图像

以下步骤将用于找出图像的颜色

  1. 裁剪图像的上部。当我比较了许多电子商务图像时,我发现大多数情况下上部的内容并不像其他部分(人的头部等)那样重要。

  2. 将图像调整到较小的尺寸。这将提高以下任务的速度。

  3. 减少图像中的颜色。这将确保相似的颜色将被均衡,只返回一组不同的颜色。

  4. 移除图像的背景。这将确保,当图像的背景颜色为白色时,返回的最频繁的颜色不会是白色。

  5. 迭代图像中的每个像素。每个像素将得到一个分数。如果像素靠近图像的中心,分数将更高。如果像素是 a) 更靠近图像边缘或 b) 像素的颜色具有肤色,分数将更低。将每个不同颜色的分数相加。

  6. 每个颜色的分数将被计算成相对百分比,颜色将按分数返回,从高到低。

用法

<?php
require 'vendor/autoload.php';

use Ckdot\ProductImageColorExtractor\Services\Extraction;
use Ckdot\ProductImageColorExtractor\Models\ColorResult;

$service = new Extraction();

/**
* @var ColorResult[] $results
*/
$results = $service->getColors('/path/to/image.jpg');

foreach ($results as $result) {
    $color = $result->getColor();
    echo sprintf(
        'R %d, G %d, B %d: Score is %f',
        $color->getRed(),
        $color->getGreen(),
        $color->getBlue(),
        $result->getScore()
    );
}