Created
March 2, 2019 19:01
-
-
Save rupython/7fb971d358900a1312ef9d0c9148ef8c to your computer and use it in GitHub Desktop.
From: UNI WOW
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| from PIL import Image | |
| from PIL import ImageDraw | |
| ''' Находиn самый большой элемент списка(в нашем случае - каких цветов больше)''' | |
| def my_max(iterable): | |
| it = iter(iterable) # получаем итератор | |
| try: | |
| max_ = next(it) # получаем первый элемент | |
| except StopIteration: # пустой ввод -- нет элементов | |
| raise ValueError('max() arg has no items') | |
| for item in it: # для каждого из оставшихся элементов | |
| if max_ < item: # если элемент больше, | |
| max_ = item # он становится новым максимумом | |
| return max_ | |
| palettedata = [191,116,202,208,149,228,222,179,235,145,41,52,195,92,118,225,148,157,243,198,208,207,91,82,121,48,34,175,76,33,114,97,50,143,124,64,172,161,104,87,66,57,142,130,113,172,157,141,195,190,186,83,56,51,163,133,107,220,197,185,190,15,43,144,99,126,181,142,175,187,139,88,209,178,108,228,212,150,92,90,53,128,132,89,150,153,105,207,128,108,229,207,7,207,206,199,236,227,140,206,29,83,42,38,40,58,65,107,66,84,139,145,64,89,199,107,157,103,96,111,157,151,172,50,77,52,99,136,93,202,5,32,94,119,181,200,16,58,124,47,119,161,184,221,243,143,182,223,70,85,116,65,169,110,136,185,244,80,77,244,124,127,61,85,44,93,116,58,108,133,70,158,178,96,234,68,128,207,45,106,236,138,183,59,55,96,82,93,65,105,126,89,138,151,98,57,47,48,153,129,212,164,163,214,216,36,50,206,8,43,233,66,65,241,93,91,245,144,137,246,187,176,174,48,48,215,63,151,239,122,199,242,152,219,78,116,77,135,166,118,158,42,91,202,64,125,241,162,203,241,162,203,182,208,163,156,127,72,240,50,93,248,83,139,195,9,28,156,130,74,235,95,110,246,187,205,244,145,193,175,155,103,166,58,73,183,78,98,159,80,105,215,140,177,217,67,130,235,106,159,125,78,99,206,179,207,129,92,187,198,193,229,56,67,97,169,186,209,191,206,224,137,166,207,220,228,234,90,134,171,172,211,222,60,109,142,135,187,198,95,115,120,246,224,207,174,96,90,212,139,128,239,197,182,214,104,52,156,35,45,223,116,106,240,168,161,109,74,60,185,154,132,108,90,79,131,99,83,76,65,71,243,29,72,127,47,76,158,42,91,218,15,116,236,85,167,109,102,170,46,92,90,59,114,123,87,144,154,171,212,212,18,154,106,157,187,176,62,142,108,86,133,102,112,158,133,149,184,164,16,97,43,191,193,24,222,161,29,228,180,53,239,202,91,238,223,174,245,142,145,243,150,113,179,84,40,229,155,94,188,131,76,174,109,44,197,69,63,205,36,75,229,52,106,237,89,138,120,48,101,155,80,142,192,119,178,142,50,164,109,105,189,130,132,206,168,183,233,184,203,225,60,87,134,19,127,202,7,146,178,11,182,211,55,200,225,42,108,89,68,141,122,101,166,150,13,148,80,76,184,126,207,136,14,225,106,37,238,145,74,241,194,125,238,172,127,125,50,48,148,69,71,198,114,108,139,91,100,167,123,133,136,89,71,159,109,92,194,151,137,248,247,245,229,215,209,147,53,28,235,138,95,199,124,118,86,82,91,124,114,134,180,175,193,162,100,54,208,160,100,125,63,46,158,81,48,185,110,55,208,140,84,218,159,108,225,181,7,231,232,89,147,116,125,182,149,162,205,183,186,86,100,42,116,133,44,132,143,72,174,185,96,184,15,40,48,67,58,76,107,95,104,139,124,135,171,159,179,209,193,76,110,163,104,154,179,145,185,210,74,91,69,129,140,115,150,156,129,161,164,135,93,86,87,229,197,188,96,25,97,150,55,157,170,78,176,212,135,210,59,107,85,90,148,101,135,193,147,160,209,166,92,99,38,123,137,43,113,167,173,151,198,197,209,6,88,225,7,109,234,32,132,241,76,163,242,119,191,245,153,213,225,2,14,242,5,40,114,86,64,143,106,78,174,141,100,207,184,160,146,69,62,139,113,90,160,139,116] | |
| # Открываем изображение | |
| oldimage = Image.open("тест.jpg") | |
| # Создаем новое изображение(копию) | |
| palimage = Image.new('P', oldimage.size) | |
| # Применяем палитру | |
| palimage.putpalette(palettedata) | |
| # Применяем палитру к изображению | |
| newimage = oldimage.quantize(palette=palimage) | |
| # Конвертируем изображение в РГБ | |
| convert_image = newimage.convert("RGB") | |
| # Запускаем модуль рисования по нашей фотографии | |
| draw = ImageDraw.Draw(convert_image) | |
| '''до''' | |
| gird_x = 0 | |
| gird_y = 0 | |
| calc = 0 | |
| calc_y = gird_y+10 # Здесь перемножаемое значение, стояло 9 исправил на 10 | |
| rgb_list = [] | |
| zzzzz = 0 | |
| while gird_x < 1280: | |
| while gird_y <= calc_y: | |
| # Получаем цвет пикселя из координат | |
| z = convert_image.getpixel((gird_x, gird_y)) | |
| # Проверяем как все работает | |
| print(str(z) + " Это цвет полученный с координат(39 строка)") | |
| # Добавляем полученный цвет в конец списка | |
| rgb_list.append(z) | |
| # Переходим в след пиксель | |
| gird_x = gird_x + 1 | |
| zzzzz = zzzzz + 1 | |
| print(str(zzzzz) + " Номер пикселя с которого считываем цвет(46 строка - просто счетчик)") | |
| # Если достигли последнего пикселя в строке | |
| if gird_x >= calc+9: | |
| # переходим на следующую строку | |
| gird_y += 1 | |
| # возвращаем курсор на начало строки | |
| gird_x = calc | |
| calc = calc +10 | |
| # Удаляем дубликаты цветов из списка | |
| sorted_list = list(set(rgb_list)) | |
| print(str(sorted_list) + " Это сортированный список цветов") | |
| len_points = len(sorted_list) | |
| # Выдаем результат подсчета цветов | |
| print(str(len_points) + " Длина списка сортированных цветов") | |
| '''Сортируем 10х10 пикселей, определяем все цвета''' | |
| # Создаем пустой список | |
| tenxten = [] | |
| # Создаем переменную для цикла | |
| point = 0 | |
| while point < len_points: | |
| print(str(sorted_list[point]) + " - " + str(rgb_list.count(sorted_list[point])) + " шт. Сколько цветов в 100 пикселях") | |
| z = int(rgb_list.count(sorted_list[point])) | |
| print(str(z) + " Количество цветов") | |
| tenxten.append(z) | |
| point = point + 1 | |
| print("\n \n \n \n " + str(tenxten) + " Сисок для нахождения нужного(максимального) цвета") | |
| # Запускаем функцию определения наибольшего к-ва цветов | |
| maximum = my_max(tenxten) | |
| print(str(maximum) + " Максимальное значение из всех посчитаных цветов") | |
| # Узнаем элемент с максимальным количеством цветов | |
| num_max = tenxten.index(maximum) | |
| color = (sorted_list[num_max]) | |
| # Отрисовка квадрата (х.у) (старт,стоп) fill=цвет квадрата outline= цвет границ квадрата | |
| draw.rectangle(((gird_x, gird_y), (gird_x + 10, gird_y-10)), fill=color, outline="red" ) | |
| gird_x = gird_x +10 | |
| if calc == 1280: | |
| gird_y = gird_y +10 | |
| convert_image.show() | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment