【问题标题】:Can thephpleague/color-extractor be used without autoload.php (composer)?可以在没有 autoload.php(作曲家)的情况下使用 phpleague/color-extractor 吗?
【发布时间】:2019-06-07 22:33:15
【问题描述】:

我正在尝试使用 color-extractor 来获取图像的颜色,但无法正常工作。

我注意到包中缺少 autoload.php 文件,经过一番谷歌搜索后,它似乎需要您使用 Composer。我没有使用过composer,也没有太多使用命令行的经验。我正在研究的东西,但希望在使用这个 php 包之前不必全部学习。

我尝试从这里更改一些 php 行:

require 'vendor/autoload.php';

use League\ColorExtractor\Color;
use League\ColorExtractor\ColorExtractor;
use League\ColorExtractor\Palette;

到这里:

require ..\lib\League\ColorExtractor\Color;
require ..\lib\League\ColorExtractor\ColorExtractor;
require ..\lib\League\ColorExtractor\Palette;

但它不起作用,我收到了这些错误:

[14-Jan-2019 07:00:43 Australia/Sydney] PHP Fatal error:  require(): Failed opening required 'lib/League/ColorExtractor/Color.php' (include_path='.:/opt/alt/php56/usr/share/pear:/opt/alt/php56/usr/share/php') in /home/windowvi/public_html/arena/examples/grid2/php/get_collection.php on line 3
[14-Jan-2019 07:07:14 Australia/Sydney] PHP Fatal error:  Class 'Palette' not found in /home/windowvi/public_html/arena/examples/grid2/php/get_collection.php on line 55

可以在不学习和使用 composer 的情况下使用这个包吗?如果可以,我将如何要求/包含文件?

谢谢!

【问题讨论】:

  • 您应该能够手动包含/要求所有类/文件,是的。你把lib文件复制到哪里了?
  • Composer 是 PHP 的标准化依赖管理器。非常简单,您可以在任何平台上使用它。为什么要避免使用?
  • 嗨,杰夫,好的。这一定是我做错了什么。我已将 lib 文件复制到:joehamilton.info/arena/examples/grid2/lib/League/ColorExtractor 并且尝试要求它的 php 文件在这里:joehamilton.info/arena/examples/grid2 SilvioQ - 我确定对于熟悉使用命令行的更有经验的程序员来说,这很容易。
  • stackoverflow.com/questions/22388647/… 的可能重复项。您只需要一个自动加载器和正确的文件结构。
  • 在大多数情况下可能首选自动加载器,但在这种情况下根本不是必需的。无需太多努力即可需要和使用源文件。

标签: php composer-php thephpleague


【解决方案1】:

希望这对您有所帮助。

创建一个名为 e.g. 的项目文件夹‘颜色提取器’

复制粘贴phpleague/color-extractor/src/League/ColorExtractor中的3个文件

  1. Color.php
  2. ColorExtractor.php
  3. Palette.php

进入您的项目文件夹。

然后创建一个 index.php 文件(见下文),该文件将运行 the phpleague/color-extractor 的 README 中的示例 - 以确保一切按预期工作。

您的项目文件夹应包含以下内容:

注意:我使用了一个“testimage.png”来测试 index.php 中的包

index.php

<?php
// import package namespaces
use League\ColorExtractor\Color;
use League\ColorExtractor\ColorExtractor;
use League\ColorExtractor\Palette;

// if you don't use an autoloader
// you need to require the package files
require __DIR__ . "/Color.php";
require __DIR__ . "/ColorExtractor.php";
require __DIR__ . "/Palette.php";

// the example from the README at ColorExtractor
$palette = Palette::fromFilename('./testimage.png');
// $palette is an iterator on colors sorted by pixel count
foreach($palette as $color => $count) {
    // colors are represented by integers
    echo Color::fromIntToHex($color), ': ', $count, "\n";
}
echo '<br />';
// it offers some helpers too
$topFive = $palette->getMostUsedColors(5);
echo '<br />';
echo 'top 5 most used colors:';
echo '<pre>';
print_r($topFive);
echo '</pre>';

$colorCount = count($palette);
echo '<br />';
echo "color count: " . $colorCount;
echo '<br />';

// this example gave me a 'notice: undefined offset'
//$blackCount = $palette->getColorCount(Color::fromHexToInt('#000000'));
//echo '<br />';
//echo "black count " . $blackCount;


// an extractor is built from a palette
$extractor = new ColorExtractor($palette);
// it defines an extract method which return the most “representative” colors
$colors = $extractor->extract(5);
echo '<br />';
echo 'most representative colors:';
echo '<pre>';
print_r($colors);
echo '</pre>';

【讨论】:

  • 谢谢。这行得通。我的错误是没有意识到我需要保留“使用”行。
  • 酷,很高兴它有效。对于它的价值,在某些时候检查 Composer 可能是值得的。祝你好运。
猜你喜欢
  • 2014-12-10
  • 2022-11-10
  • 2018-06-16
  • 2019-07-09
  • 1970-01-01
  • 2017-12-01
  • 2016-07-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多