php獲取圖片RGB顏色值的例子
很多圖片站點都會根據用戶上傳的圖片檢索出圖片的主要顏色值,然後在通過顏色搜索相關的圖片。
之前按照網上的方法將圖片縮放(或者馬賽克)然後遍歷每個像素點,然後統計處RGB次數最多的值,這做法效率太低而且取到的RGB值不夠精確。之後才發現使用Imagick的quantizeImage方法能夠很方便的取到圖片中平均的RGB值.
$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 ){ // www.jbxue.com $colorarr[] = $pixel->getColor(); } } 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>"; }