【问题标题】:Detecting how many colors an uploaded image has检测上传的图像有多少种颜色
【发布时间】:2012-01-20 13:50:43
【问题描述】:

如何检测图像有多少种颜色,然后在 PHP 中返回这些颜色的 RGB 或 Hex 值?使用标准文件格式...PNG、JPG、GIF 等。

示例图片:

用于: 一种在线设计工具,可让您上传图像以供设计器使用。我试图拒绝所有超过 10 种颜色的图像(或可能减少颜色?)。对于少于 10 种颜色的图像,我尝试返回存在的每种颜色的 Hex 或 RGB 值(存在的颜色越多,打印过程越昂贵)。

【问题讨论】:

  • 你能举个图片的例子吗?以及此类代码的目的。

标签: php colors


【解决方案1】:
$gd = imagecreatefrompng($filename);

$width = imagesx($gd);
$height = imagesy($gd);

$colors = array();

for($x = 0; $x < $width; $x++)
{
    for($y = 0; $y < $height; $y++)
    {
        $color = imagecolorat($gd, $x, $y);
        $hex = sprintf("0x%06x", $color);

        if(!in_array($hex, $colors))
        {
            $colors[] = $hex;
        }
    }
}

【讨论】:

  • 这该死的慢,但我发布了相同的解决方案:)
  • 如果我试图拒绝任何超过 10 种颜色的图像,我是否可以使用一种更具统计性的方法而不是逐像素检查?
  • @Walker:您只需将其放入一个函数中,并在count($colors) &gt; 10 后立即返回false。我不认为这是最理想的,但它可能是最容易实现的。
  • Array ([0] => 0x0000e1 [1] => 0x0000e0 [2] => 0x0000e3 [3] => 0x0000e2)//我得到这个类型的数组包含值我怎么知道0x0000e1是什么颜色
  • 我怎么知道哪个数字代表哪种颜色。
猜你喜欢
  • 2011-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-16
  • 2014-05-12
相关资源
最近更新 更多