Optical sensor for picking up 15 mm² area at a distance of 1 cm and return RGB value (or similar estimate)
Consider using a simple light level sensor and providing separate red, green, and blue illumination. Flash them separately and record the light levels to determine the color. This would reduce your dependency on the outside light source, and the "flash" could be a tiny fraction of a second long.

This would be like using a red light to illuminate a barcode to give better contrast than scanning without the red light.