1. A computer-implemented method for generating a color palette, the computer-implemented method comprising: under control of a hardware computing device configured with specific computer-executable instructions, obtaining a color image; obtaining a first color distance threshold and a second color distance threshold for use in generating a color palette, wherein the color palette is generated based, at least in part, on the color image; identifying a plurality of representative colors and a plurality of color weights based, at least in part, on the color image, wherein identifying the plurality of representative colors and plurality of color weights comprises: determining a popularity of a group of colors among a plurality of users; selecting a color from a current color distribution corresponding to the color image based, at least in part, on the popularity; identifying a first subset of colors in the current color distribution that have a color distance within the first color distance threshold from the selected color; determining a representative color to be a color representing the identified subset of colors; associating a color weight with the determined representative color based, at least in part, on a collective weight measure corresponding to the identified first subset of colors; identifying a second subset of colors in the current color distribution that have a color distance within the second color distance threshold, from the determined representative color; and generating a new color distribution from the current color distribution by removing the second subset of colors from the current color distribution; and generating the color palette based, at least in part, on the identified plurality of representative colors and plurality of color weights.