Во-первых, давайте сделаем изображение. Я просто использую ImageMagick , чтобы сделать синий фон с пурпурной надписью:
convert -size 300x120 -background blue -fill magenta -gravity center -font AppleChancery label:"StackOverflow" PNG24:image.png
Как видите, я указал только два цвета - пурпурный и синий, но изображение PNG на самом деле содержит более 200 цветов, а изображение JPEG содержит 2370 разных цветов!
Итак, если я хочу получить два основных цвета, я могу сделать это:
from PIL import Image
# Open the image
im = Image.open('image.png')
# Quantize down to 2 colour palettised image using *"Fast Octree"* method:
q = im.quantize(colors=2,method=2)
# Now look at the first 2 colours, each 3 RGB entries in the palette:
print(q.getpalette()[:6])
Образец результата
[0, 0, 255, 247, 0, 255]
Если вы записали это как 2 RGB-триплета, вы получите:
RGB 0/0/255 = blue
RGB 247/0/255 = magenta
Лучший способ сделать это для большого количества изображений - использовать многопоточность или многопроцессорность, если вы хотите, чтобы они выполнялись быстро!
Ключевые слова : Python, PIL, Подушка, изображение, обработка изображений, октри, быстрое октри, квантование, квантование, палитра, палитра, палитризация, уменьшение цветов, уменьшение цветов, сглаживание, шрифт, уникальный , уникальные цвета, уникальные цвета.