ImageMagick ваш друг
~> convert image.jpg -gravity center -crop 80x80%+0+0 -scale 1x1\! txt:-
# ImageMagick pixel enumeration: 1,1,255,srgb
0,0: (131, 89, 61) #83593D rgb(131,89,61)
Это работает, обрезая внешний 20% край (центр тяжести указывает на обрезку внешних краев). Затем оно масштабирует изображение до одного пикселя и выводит его на экран (если вы замените - в конце строки именем файла, вы можете записать вывод в файл). Вы также можете поэкспериментировать с параметрами изменения размера / фильтрации, но масштабирование будет немного быстрее, и для этого приложения, я ожидаю, идеально.
Обратите внимание, что эти значения являются значениями Red / Green / Blue, как вы сортируете, это другая проблема. Вы можете выбрать самые высокие значения и предположить, что они преобладают, но это, вероятно, не даст желаемого результата, переход на HSL или HSB, вероятно, предоставит более полезный набор значений для сортировки:
~> convert image.jpg -gravity center -crop 80x80%+0+0 -scale 1x1\! -colorspace hsl txt:-
# ImageMagick pixel enumeration: 1,1,255,srgb
0,0: ( 19, 76,162) #134CA2 hsl(7.46929%,29.8466%,63.5111%)
HSB:
~> convert image.jpg -gravity center -crop 80x80%+0+0 -scale 1x1\! -colorspace hsb txt:-
# ImageMagick pixel enumeration: 1,1,255,srgb
0,0: ( 19, 75,190) #134BBE hsb(7.46929%,29.276%,74.4015%)
Сортировка отсюда не слишком сложна в сценарии оболочки.