首页站内杂志技术文摘
文章内容页

自动识别图片颜色php代码

  • 作者:雨祺
  • 来源: 电脑原创
  • 发表于2025-03-12 11:58:51
  • 阅读0
  • 要实现一个PHP脚本来自动识别图片的主要颜色,并将其分类为红色、橙色、黄色、绿色、青色、蓝色、紫色、棕色、白色、黑色、灰色等颜色,可以使用PHP的GD库来处理图像,并通过计算图像中像素的颜色值来确定主要颜色。以下是一个简单的PHP脚本示例:
    1. <?php 
    2. function getDominantColor($imagePath) { 
    3.     // 打开图像 
    4.     $image = imagecreatefromjpeg($imagePath); // 如果是其他格式的图像,可以使用 imagecreatefrompng 或 imagecreatefromgif 
    5.     $width = imagesx($image); 
    6.     $height = imagesy($image); 
    7.     $totalPixels = $width * $height; 
    8.     $colorCounts = []; 
    9.     // 遍历图像的每个像素 
    10.     for ($x = 0; $x < $width; $x++) { 
    11.         for ($y = 0; $y < $height; $y++) { 
    12.             $rgb = imagecolorat($image, $x, $y); 
    13.             $r = ($rgb >> 16) & 0xFF; 
    14.             $g = ($rgb >> 8) & 0xFF; 
    15.             $b = $rgb & 0xFF; 
    16.             // 将颜色分类 
    17.             $color = classifyColor($r, $g, $b); 
    18.             if (!isset($colorCounts[$color])) { 
    19.                 $colorCounts[$color] = 0; 
    20.             } 
    21.             $colorCounts[$color]++; 
    22.         } 
    23.     } 
    24.     // 找到出现次数最多的颜色 
    25.     arsort($colorCounts); 
    26.     return key($colorCounts); 
    27. function classifyColor($r, $g, $b) { 
    28.     // 将RGB颜色转换为HSV颜色空间 
    29.     list($h, $s, $v) = rgbToHsv($r, $g, $b); 
    30.     // 根据HSV值分类颜色 
    31.     if ($v < 10) return '黑色'
    32.     if ($s < 10 && $v > 90) return '白色'
    33.     if ($s < 10 && $v < 90) return '灰色'
    34.     if ($h < 15) return '红色'
    35.     if ($h < 45) return '橙色'
    36.     if ($h < 70) return '黄色'
    37.     if ($h < 150) return '绿色'
    38.     if ($h < 195) return '青色'
    39.     if ($h < 255) return '蓝色'
    40.     if ($h < 285) return '紫色'
    41.     if ($h < 330) return '红色'// 再次红色,因为HSV是环形的 
    42.     return '棕色'
    43. function rgbToHsv($r, $g, $b) { 
    44.     $r = $r / 255; 
    45.     $g = $g / 255; 
    46.     $b = $b / 255; 
    47.     $max = max($r, $g, $b); 
    48.     $min = min($r, $g, $b); 
    49.     $delta = $max - $min; 
    50.   
    51.     $v = $max; 
    52.   
    53.     if ($delta == 0) { 
    54.         $h = 0; 
    55.         $s = 0; 
    56.     } else { 
    57.         $s = $delta / $max; 
    58.         if ($r == $max) { 
    59.             $h = 60 * fmod((($g - $b) / $delta), 6); 
    60.         } elseif ($g == $max) { 
    61.             $h = 60 * ((($b - $r) / $delta) + 120; 
    62.         } else { 
    63.             $h = 60 * ((($r - $g) / $delta) + 240; 
    64.         } 
    65.     }  
    66.     if ($h < 0) { 
    67.         $h += 360; 
    68.     } 
    69.     return [intval($h), intval($s * 100), intval($v * 100)]; 
    70. // 使用示例 
    71. $imagePath = 'path/to/your/image.jpg'
    72. $dominantColor = getDominantColor($imagePath); 
    73. echo "图片的主要颜色是: " . $dominantColor; 
    74. ?> 
    使用方法:

    将脚本保存为PHP文件,并将 $imagePath 变量设置为你要分析的图像路径。运行脚本,脚本将输出图像的主要颜色。

    注意事项

    该脚本是一个简单的示例,适用于小图像。对于大图像,遍历每个像素可能会比较耗时。颜色分类的准确性取决于HSV值的阈值设置,可能需要根据具体需求进行调整。
    【审核人:站长】

        标题:自动识别图片颜色php代码

        本文链接:https://www.wenyunfang.com/zazhi/zhongwangjiaocheng/1265.html

        赞一下

        深度阅读

        • 您也可以注册成为文韵坊的作者,发表您的原创作品、分享您的心情!

        阅读记录

          关注文韵坊