У меня есть следующий метод, который получает значение rgb и классифицирует его, используя меньшую палитру:
private static int roundToNearestColor( int rgb, int nrColors )
{
int red = ( rgb >> 16 ) & 0xFF;
int green = ( rgb >> 8 ) & 0xFF;
int blue = ( rgb & 0xFF );
red = red - ( red % nrColors );
green = green - ( green % nrColors );
blue = blue - ( blue % nrColors );
return 0xFF000000 | ( red << 16 ) | ( green << 8 ) | ( blue );
}
Код, который меня раздражает:
red = red - ( red % nrColors );
green = green - ( green % nrColors );
blue = blue - ( blue % nrColors );
Я уверен, что есть альтернативная побитовая версия, которая будет работать быстрее, но поскольку моя побитовая арифметика немного ржавая, у меня проблемы с поиском такого выражения. Любая помощь или комментарии будут оценены.