dolphin 发表于 2014-9-21 16:12:53

获得图像的主要颜色算法

在这个网站看到的
http://veerle.duoh.com/inspiration

感觉效果很好啊

想试着自己做一下

tp社区有人贴出了下面的算法

好像大家的做法基本都是这样

但是我测试的结果 却没有达到上面这个网站的效果

使用很明显的一幅图像测试 得到的颜色明显有偏差

算法如下


/*
* 图片主要(三通道)颜色判断
*/
if ( ! function_exists('image_color'))
{
        function image_color($image)
        {
          $imageInfo = getimagesize($image);
          //图片类型
          $imgType = strtolower(substr(image_type_to_extension($imageInfo), 1));
          //对应函数
          $imageFun = 'imagecreatefrom' . ($imgType == 'jpg' ? 'jpeg' : $imgType);
          $i = $imageFun($image);
          //循环色值
          $rColorNum = $gColorNum = $bColorNum = $total = 0;
          for ($x=0;$x<imagesx($i);$x++)
          {
                for ($y=0;$y<imagesy($i);$y++)
                {
                    $rgb = imagecolorat($i,$x,$y);
                    //三通道
                    $r = ($rgb >> 16) & 0xFF;
                    $g = ($rgb >> 8) & 0xFF;
                    $b = $rgb & 0xFF;

                    $rColorNum += $r;
                    $gColorNum += $g;
                    $bColorNum += $b;
                    $total++;
                }
          }
          $rgb      = array();
          $rgb['r'] = round($rColorNum/$total);
          $rgb['g'] = round($gColorNum/$total);
          $rgb['b'] = round($bColorNum/$total);
          return $rgb;
        }
}







cheneylam 发表于 2015-1-6 15:47:00

打发对方答复打发
页: [1]
查看完整版本: 获得图像的主要颜色算法