php识别图片的主色调
本文只做一些基础的单点识别判断,仅供参考。
- //取图片位于y轴1/2处的某单点主色调方法
- function getRgb($file){
- //裁切图片
- $size = getimagesize($file);
- // 剪裁指定区域用于取色
- //创建源图的实例
- $src = imagecreatefromstring(file_get_contents($file));
- //裁剪开区域左上角的点的坐标
- $x = 0;
- $y = intval($size[1]/2);
- //裁剪区域的宽和高
- $width = $size[0];
- $height = intval($size[1]/2);
- //最终保存成图片的宽和高,和源要等比例,否则会变形
- $final_width = $size[0];
- $final_height = intval($size[1]/2);
- //将裁剪区域复制到新图片上,并根据源和目标的宽高进行缩放或者拉升
- $new_image = imagecreatetruecolor($final_width, $final_height);
- imagecopyresampled($new_image, $src, 0, 0, $x, $y, $final_width, $final_height, $width, $height);
- // header('Content-Type: image/jpeg');
- // imagejpeg($new_image);
- //$im = imagecreatefromstring ( $new_image );
- //获取图片主要RGB色
- $rgb = imagecolorat ( $new_image , 10 , 15 );
- $r = ( $rgb >> 16 ) & 0xFF ;
- $g = ( $rgb >> 8 ) & 0xFF ;
- $b = $rgb & 0xFF ;
- $res = $r*.299+$g*.587+$b*.114; //简单计算主要色调
- if($res < 80){
- echo '暗色调';
- }else{
- echo '亮色调';
- }
- return $res;
- imagedestroy($src);
- imagedestroy($new_image);
- }
PS:
imagecolorat函数注释:取得某像素的颜色索引值(PHP 4, PHP 5, PHP 7)
语法: int imagecolorat(int im, int x, int y);
返回值: 整数,返回image 所指定的图形中指定位置像素的颜色索引值。
相似函数:imagecolorsforindex — 取得某索引的颜色
本文作者:未来往事
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处
此处评论已关闭