Я тоже думаю, что вы подходите для минимума цвета. Цветовая дисперсия тоже проста. Если вы выберете небольшую дисперсию, вы получите изображения с небольшим количеством используемых цветов. По логике 0% дисперсия должна приводить к изображению только одного цвета.
Я не думаю, что вам нужно хранить пиксели вообще, логически для хранения нового изображения это выглядит так:
- Прочитать файл изображения
- Найдите, сколько в нем разных цветов
- Хранить путь к изображению и количество разных цветов на нем.
Тогда при получении изображения изображение будет выглядеть так:
- Спросите пользователя, какое отклонение ему нравится
- Допустим, дисперсия = 60%
- Считать различное максимальное количество цветов для изображения
- MaxColors = 100% (скажем, макс. = 18 цветов на изображение)
- Превратить 60% в целое число
18 = 100%
х = 60% тогда
18 * 60 = 100 * х, затем 100 * х = 1080, затем х = 10,8
- Сделайте 10,8 раунда, чтобы он стал х = 11
- Извлечение из базы данных всех изображений, имеющих 11 или более цветов
- Показать эти изображения как результат
Так что вообще не нужно хранить ни одного пикселя, только одно целое число, которое указывает, сколько цветов состоит из изображения.