<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <title>Color Letter Mapper</title>
  <style>
    body {
      font-family: monospace;
      padding: 20px;
      text-align: center;
    }
    #output {
      margin-top: 20px;
      word-break: break-word;
      white-space: pre-wrap;
      max-width: 800px;
      margin: auto;
      background: #111;
      color: #0f0;
      padding: 10px;
      border: 1px solid #444;
    }
    canvas {
      display: none;
    }
  </style>
</head>
<body>
  <h1>Color-to-Letter Conversion</h1>
  <input type="file" id="imageInput" accept="image/*" />
  <canvas id="canvas" width="50"></canvas>
  <div id="output">Upload an image...</div>

  <script>
    const colors = [
      { r: 255, g: 165, b: 0,   letter: 'o' }, // orange
      { r: 0,   g: 0,   b: 0,   letter: '0' }, // black
      { r: 255, g: 0,   b: 0,   letter: 'r' }, // red
      { r: 255, g: 255, b: 0,   letter: 'y' }, // yellow
      { r: 0,   g: 255, b: 0,   letter: 'g' }, // green
      { r: 255, g: 255, b: 255, letter: '1' }, // white
      { r: 0,   g: 0,   b: 255, letter: 'b' }, // blue
      { r: 0,   g: 255, b: 255, letter: 't' }, // cyan-looking (turquoise)
      { r: 255, g: 0,   b: 255, letter: 'p' }  // purple
    ];

    function getClosestColorLetter(r, g, b) {
      let minDist = Infinity;
      let closest = 'x';

      for (const color of colors) {
        const dr = r - color.r;
        const dg = g - color.g;
        const db = b - color.b;
        const dist = dr * dr + dg * dg + db * db;
        if (dist < minDist) {
          minDist = dist;
          closest = color.letter;
        }
      }
      return closest;
    }

    const imageInput = document.getElementById("imageInput");
    const canvas = document.getElementById("canvas");
    const ctx = canvas.getContext("2d");
    const output = document.getElementById("output");

    imageInput.addEventListener("change", () => {
      const file = imageInput.files[0];
      if (!file) return;

      const reader = new FileReader();
      reader.onload = function (e) {
        const img = new Image();
        img.onload = function () {
          const targetWidth = 50;
          const scale = targetWidth / img.width;
          const targetHeight = Math.floor(img.height * scale);

          canvas.width = targetWidth;
          canvas.height = targetHeight;
          ctx.drawImage(img, 0, 0, targetWidth, targetHeight);

          const imageData = ctx.getImageData(0, 0, targetWidth, targetHeight).data;
          let result = "";

          for (let i = 0; i < imageData.length; i += 4) {
            const r = imageData[i];
            const g = imageData[i + 1];
            const b = imageData[i + 2];
            result += getClosestColorLetter(r, g, b);
          }

          output.textContent = result;
        };
        img.src = e.target.result;
      };

      reader.readAsDataURL(file);
    });
  </script>
</body>
</html>