php获取图片颜色值有哪些方法?

发布时间:2020-09-07编辑:脚本学堂
本文介绍了php获取图片颜色值的方法,PHP获取图片颜色值检测图片主要颜色,使用imagecreatefromjpeg函数读取图片,然后循环获得各个颜色值加以计算,有需要的朋友参考下。

php如何获取图片颜色值

例子:
 

复制代码 代码示例:
<?php
$i=imagecreatefromjpeg("photo3.jpg");//测试图片
for ($x=0;$x<imagesx($i);$x++) {
for ($y=0;$y<imagesy($i);$y++) {
$rgb = imagecolorat($i,$x,$y);
$r=($rgb >>16) & 0xFF;
$r=($rgb >>16) & 0xFF;
$g=($rgb >> & 0xFF;
$b=$rgb & 0xFF;
$rTotal += $r;
$gTotal += $g;
$bTotal += $b;
$total++;
}
}
$rAverage = round($rTotal/$total);
$gAverage = round($gTotal/$total);
$bAverage = round($bTotal/$total);
//示例:
echo $rAverage;
?>

例2,php获取图片主要RGB颜色值。
根据用户上传的图片检索出图片的主要颜色值,然后通过颜色搜索相关的图片。

 

php获取图片颜色值的方法

按照网上的方法将图片缩放(或者马赛克)然后遍历每个像素点,然后统计处RGB次数最多的值,这做法效率太低而且取到的RGB值不够精确。
之后才发现使用Imagick的quantizeImage方法能够很方便的取到图片中平均的RGB值。(www.jb200.com 脚本学堂)

代码:
 

复制代码 代码示例:

<?php
$average = new Imagick("xiaocai.jpg");
$average->quantizeImage( 10, Imagick::COLORSPACE_RGB, 0, false, false );
$average->uniqueImageColors();

function GetImagesColor( Imagick $im ){
    $colorarr = array();
    $it = $im->getPixelIterator();
    $it->resetIterator();

    while( $row = $it->getNextIteratorRow() ){
        foreach ( $row as $pixel ){
            $colorarr[] = $pixel->getColor();
        }
    } // www.jb200.com
    return $colorarr;
}
$colorarr = GetImagesColor($average);
foreach($colorarr as $val){
    echo "<div style='background-color: rgb({$val['r']},{$val['g']},{$val['b']});width:50px;height:50px;float:left;'></div>";
}

输出结果:
php获取图片颜色值的方法