php识别图片的主色调

本文只做一些基础的单点识别判断,仅供参考。

  1. //取图片位于y轴1/2处的某单点主色调方法  
  2. function getRgb($file){  
  3.   //裁切图片  
  4.   $size = getimagesize($file);  
  5.   // 剪裁指定区域用于取色  
  6.   //创建源图的实例  
  7.   $src = imagecreatefromstring(file_get_contents($file));  
  8.   //裁剪开区域左上角的点的坐标  
  9.   $x = 0;  
  10.   $y = intval($size[1]/2);  
  11.   //裁剪区域的宽和高  
  12.   $width = $size[0];  
  13.   $height = intval($size[1]/2);  
  14.   //最终保存成图片的宽和高,和源要等比例,否则会变形  
  15.   $final_width = $size[0];  
  16.   $final_height = intval($size[1]/2);  
  17.   //将裁剪区域复制到新图片上,并根据源和目标的宽高进行缩放或者拉升  
  18.   $new_image = imagecreatetruecolor($final_width$final_height);  
  19.   imagecopyresampled($new_image$src, 0, 0, $x$y$final_width$final_height$width$height);  
  20.   // header('Content-Type: image/jpeg');  
  21.   // imagejpeg($new_image);  
  22.     
  23.   //$im  =  imagecreatefromstring ( $new_image );  
  24.   //获取图片主要RGB色  
  25.   $rgb  =  imagecolorat ( $new_image ,  10 ,  15 );  
  26.   $r  = ( $rgb  >>  16 ) &  0xFF ;  
  27.   $g  = ( $rgb  >>  8 ) &  0xFF ;  
  28.   $b  =  $rgb  &  0xFF ;  
  29.   $res =  $r*.299+$g*.587+$b*.114; //简单计算主要色调  
  30.   if($res < 80){  
  31.     echo '暗色调';  
  32.   }else{  
  33.     echo '亮色调';  
  34.   }  
  35.   return $res;  
  36.   imagedestroy($src);  
  37.   imagedestroy($new_image);  
  38. }  

PS:
imagecolorat函数注释:取得某像素的颜色索引值(PHP 4, PHP 5, PHP 7)
语法: int imagecolorat(int im, int x, int y);
返回值: 整数,返回image 所指定的图形中指定位置像素的颜色索引值。

相似函数:imagecolorsforindex — 取得某索引的颜色

相关文章

此处评论已关闭