You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将提取的十六进制颜色码转换为颜色名称并存入数据库?

Hey there! Let's work through how to map those extracted hex color codes (without the # prefix) to human-readable color names for your post filtering feature. Here's a practical approach tailored to your PHP setup:

1. Start with a Color Mapping Table

First, create an array that maps standard hex color codes (lowercase, no #) to their common names. You can expand this list based on the colors relevant to your platform:

$colorMap = [
    '000000' => 'black',
    'ffffff' => 'white',
    'ff0000' => 'red',
    '00ff00' => 'green',
    '0000ff' => 'blue',
    'ffff00' => 'yellow',
    'ff00ff' => 'magenta',
    '00ffff' => 'cyan',
    '0d66ac' => 'darkblue', // Add your example color directly if you want an exact match
    '800000' => 'maroon',
    '008000' => 'darkgreen',
    // Keep adding more colors as needed!
];
2. Exact Match for Standard Colors

If your extracted hex code matches one in the map, you can directly grab the name. Add a fallback for unrecognized colors to avoid errors:

// Assume this is the hex code from your image extraction script
$extractedHex = strtolower('0d66ac'); 
$colorName = 'unknown'; // Default for unrecognized colors

if (isset($colorMap[$extractedHex])) {
    $colorName = $colorMap[$extractedHex];
}

// Now you can store $colorName in your database, e.g.:
// $stmt = $pdo->prepare("INSERT INTO posts (title, content, color) VALUES (?, ?, ?)");
// $stmt->execute([$postTitle, $postContent, $colorName]);
3. Handle Approximate Colors (Optional)

If your extracted colors aren't exact matches (like slightly different shades of blue), you can calculate the closest color name using RGB distance. Here's how:

First, a helper function to convert hex to RGB values:

function hexToRgb($hex) {
    return [
        hexdec(substr($hex, 0, 2)),
        hexdec(substr($hex, 2, 2)),
        hexdec(substr($hex, 4, 2))
    ];
}

Then, a function to find the closest color by calculating the Euclidean distance between RGB values:

function getClosestColor($targetHex, $colorMap) {
    $targetRgb = hexToRgb($targetHex);
    $closestName = 'unknown';
    $minDistance = PHP_INT_MAX;

    foreach ($colorMap as $hex => $name) {
        $currentRgb = hexToRgb($hex);
        // Calculate distance between the two RGB sets
        $distance = sqrt(
            pow($targetRgb[0] - $currentRgb[0], 2) +
            pow($targetRgb[1] - $currentRgb[1], 2) +
            pow($targetRgb[2] - $currentRgb[2], 2)
        );

        if ($distance < $minDistance) {
            $minDistance = $distance;
            $closestName = $name;
        }
    }

    return $closestName;
}

// Example usage:
$extractedHex = '0d66ac';
$colorName = getClosestColor($extractedHex, $colorMap);
// This would return 'blue' or 'darkblue' depending on your map
4. Pro Tips for Improvement
  • Expand your color map: Add more specific shades (like lightblue, navy) to make matches more accurate.
  • Store both values: Consider saving the original hex code alongside the color name—this lets you re-run the mapping later if you update your color list.
  • Use a library (optional): For more advanced color recognition, check out PHP libraries that handle color parsing and matching to streamline the process.

内容的提问来源于stack exchange,提问作者Zanic L3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:59:20