php获取图片颜色值的两种方法

PHP中文网
發布: 2016-07-25 08:52:59
原創
2364 人瀏覽過

php获取图片颜色值的两种方法

  1. <?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值。(bbs.it-home.org 脚本学堂)

代码:

?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();
}
} // bbs.it-home.org
return $colorarr;
}
$colorarr = GetImagesColor($average);
foreach($colorarr as $val){
echo "
";
}
登入後複製

输出结果:

4.jpg





來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!