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 导入的产品图像中的颜色。我只有两个要求:
-
结果(颜色)应该非常准确
-
执行应该很快 - 因此在几分钟内必须处理成千上万的图像
以下步骤将用于找出图像的颜色
-
裁剪图像的上部。当我比较了许多电子商务图像时,我发现大多数情况下上部的内容并不像其他部分(人的头部等)那样重要。
-
将图像调整到较小的尺寸。这将提高以下任务的速度。
-
减少图像中的颜色。这将确保相似的颜色将被均衡,只返回一组不同的颜色。
-
移除图像的背景。这将确保,当图像的背景颜色为白色时,返回的最频繁的颜色不会是白色。
-
迭代图像中的每个像素。每个像素将得到一个分数。如果像素靠近图像的中心,分数将更高。如果像素是 a) 更靠近图像边缘或 b) 像素的颜色具有肤色,分数将更低。将每个不同颜色的分数相加。
-
每个颜色的分数将被计算成相对百分比,颜色将按分数返回,从高到低。
用法
<?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() ); }